Python ip与数字的转换方式

例子:IP:192.168.1.10

方法一:

In [1]: bin(192)
Out[1]: '0b11000000'

In [2]: bin(168)
Out[2]: '0b10101000'

In [4]: bin(1)
Out[4]: '0b1'

In [5]: bin(10)
Out[5]: '0b1010'

所以192.168.1.10 转换成整数:3232235786

In [6]: 0b11000000101010000000000100001010
Out[6]: 3232235786

方法二:

In [7]: 192*256**3+168*256**2+1*256**1+10*256**0
Out[7]: 3232235786

 ##########实战代码####################

[root@master script]# cat ip.py 
#!/usr/bin/python
# coding:utf-8


def ip2int():
    ip = raw_input('请输入需要转换成数字的IP(例如:192.168.1.10): ')
    ip_list = ip.strip().split('.')
    ip_int = int(ip_list[0])*256**3+int(ip_list[1])*256**2+int(ip_list[2])*256**1+int(ip_list[3])*256**0
    return ip_int   
    

#def int2ip(num):
#    iplist = []
#    for n in range(4): 
#        num,mod = divmod(num,256)
#        iplist.append(str(mod))
#    rip = iplist[::-1]
#    rip_num = '.'.join(rip)
#    return rip_num

def int2ip():
    num = int(raw_input('请输入需要转换成IP的整数: '))
    iplist = []
    for n in range(4):
        num,mod = divmod(num,256)
        iplist.insert(0,str(mod))
    return '.'.join(iplist)

def show_menu():
    CMDs = {'1':ip2int,'2':int2ip}
    while True:
        prompt = """\033[31;1m(1)ip转换成数字\033[0m
\033[32;1m(2)数字转换成IP\033[0m
\033[33;1m(3)退出(q)\033[0m
\033[34;1m请输入你的选择(1/2/3):\033[0m"""
        choice = raw_input(prompt)
        if choice == '3':
            break
        print CMDs[choice]()
    
if __name__ == '__main__':
     show_menu()
检验:

[root@master script]# python ip.py
(1)ip转换成数字
(2)数字转换成IP
(3)退出(q)
请输入你的选择(1/2/3):1
请输入需要转换成数字的IP(例如:192.168.1.10): 86.78.98.34
1447977506
(1)ip转换成数字
(2)数字转换成IP
(3)退出(q)
请输入你的选择(1/2/3):2
请输入需要转换成IP的整数: 1447977506
86.78.98.34
(1)ip转换成数字
(2)数字转换成IP
(3)退出(q)
请输入你的选择(1/2/3):3

########终极版##########
[root@master script]# cat ip.py 
#!/usr/bin/python
# coding:utf-8


#def ip2int():
#    ip = raw_input('请输入需要转换成数字的IP(例如:192.168.1.10): ')
#    ip_list = ip.strip().split('.')
#    ip_int = int(ip_list[0])*256**3+int(ip_list[1])*256**2+int(ip_list[2])*256**1+int(ip_list[3])*256**0
#    return ip_int   
def ip2int():
    ip = raw_input('请输入需要转换成数字的IP(例如:192.168.1.10): ')
    ip_list = ip.strip().split('.')
    SUM = 0
    for i in range(len(ip_list)):
        SUM += int(ip_list[i])*256**(3-i)
    return SUM    

#def int2ip(num):
#    iplist = []
#    for n in range(4): 
#        num,mod = divmod(num,256)
#        iplist.append(str(mod))
#    rip = iplist[::-1]
#    rip_num = '.'.join(rip)
#    return rip_num

def int2ip():
    num = int(raw_input('请输入需要转换成IP的整数: '))
    iplist = []
    for n in range(4):
        num,mod = divmod(num,256)
        iplist.insert(0,str(mod))
    return '.'.join(iplist)

def show_menu():
    CMDs = {'1':ip2int,'2':int2ip}
    while True:
        prompt = """\033[31;1m(1)ip转换成数字\033[0m
\033[32;1m(2)数字转换成IP\033[0m
\033[33;1m(3)退出(q)\033[0m
\033[34;1m请输入你的选择(1/2/3):\033[0m"""
        choice = raw_input(prompt)
        if choice == '3':
            break
        print CMDs[choice]()
    
if __name__ == '__main__':
     show_menu()

 

posted @ 2017-08-11 10:35  大漠之烟  阅读(2975)  评论(0编辑  收藏  举报