毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

PYTHON整数转IP的程序代码

更新时间:2016-6-15:  来源:毕业论文

#      (a)创建一个从整数到IP 地址的转换程序,如下格式: WWW.XXX.YYY.ZZZ
#      (b)更新你的程序,使之可以逆转换.
def num_to_ip(a_num): 
    src = int(a_num) 
    str_ip = "" 
 
    tmp = src//(256**3) 
    str_ip += str(tmp) 
    str_ip += '.' 
 
    src -= tmp*(256**3) 
    tmp = src//(256**2) 
    str_ip += str(tmp) 
    str_ip += '.' 
 
    src -= tmp*(256**2) 
    tmp = src//(256) 
    str_ip += str(tmp) 
    str_ip += '.' 
 
    src -= tmp*256 
    str_ip += str(src)     
 
    return str_ip 
 
# num = raw_input("Input a number to ip: ") 
# print(num_to_ip(num)) 
 
def ip_to_num(ip): 
    num_list = ip.split('.') 
    num_list.reverse() 
    ret_num = 0 
     
    for i in range(len(num_list)): 
        ret_num += int(num_list[i])*pow(256, i) 
 
    return ret_num 
     
ip = raw_input("Input a ip to number: ") 
print(ip_to_num(ip)) 


这里的num_to_ip这个函数我不太明白

这里ip的每一项可以用一个字节表示0-255
用四个字节就可以表示ipv4的地址,将这四个字节按一个整数解释,用ip_to_num转换结果就是一个32位整数
num_to_ip依次取出32位整数表示的ip的每一字节项,用.连接成ip地址

比如a.b.c.d用32位整数表示就是num = a*(256**3) + b*(256**2) + c*(256**1) + d*(256**0)
通过num整除(256**3)能得到a
之后将num减去a*(256**3)并整除(256**2)能得到b

src//(256**3)   实质上就是src左移 8*3=24位,就是相当于将高8位移到低八位,高24位补 // 是整数除的意思。
src -= tmp*(256**3)   这个由于已经计算完高8位了,需要将高八位置0,tmp = src//(256**2)   再计算高9位到高16位
其他类似

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。