xylz,imxylz

关注后端架构、中间件、分布式和并发编程

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  111 随笔 :: 10 文章 :: 2680 评论 :: 0 Trackbacks

6-11. Conversion.

Create a program that will convert from an integer to an Internet Protocol (IP) address in the four-octet format of WWW.XXX.YYY.ZZZ.

Update your program to be able to do the vice versa of the above.
 

 1#!/usr/bin/env python
 2#-*- coding:utf-8 -*-
 3#$Id: p0611.py 139 2010-05-21 09:45:30Z xylz $
 4
 5'''
 6This is a 'python' study plan for xylz.
 7Copyright (C)2010 xylz (www.imxylz.info)
 8'''
 9
10def convertIp2Str(ip):
11    return '.'.join( ( str((ip>>i) &0xFFfor i in (24,16,8,0)) )
12
13def convertStr2Ip(s):
14    r=0
15    for i,v in enumerate(s.split('.')):
16        r |= ( int(v) << (24-i*8))
17    return r
18
19
20if __name__ == '__main__':
21    '''
22    Convert ip from Integer number to string and do it versa.
23    '''
24    sip = '192.168.1.1'
25    ip = convertStr2Ip(sip)
26    sip2 = convertIp2Str(ip)
27    print sip,ip,sip2
很显然这里没有对IP有效性进行校验,这里假设IP地址都是有效的。
在11行,首先构造一个4个数的迭代器,对于迭代器里面的每一项,将ip整数往右移一个字节,然后与0xFF,这样就得到了每一项的值。然后同string.join(s)将一个迭代器或者列表连接起来,构成一个"xxx.xxx.xxx.xxx"格式的字符串。

©2009-2014 IMXYLZ |求贤若渴
posted on 2010-05-27 11:42 imxylz 阅读(16710) 评论(0)  编辑  收藏 所属分类: Python

只有注册用户登录后才能发表评论。


网站导航:
 

©2009-2014 IMXYLZ