导航

IP地址与Bigint转换

Posted on 2012-09-03 15:08  moose  阅读(747)  评论(0编辑  收藏  举报

参考地址:  http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/how-to-convert-ip-addresses-between-bigi

 

程序代码:

import sys

def ipToBigint(ipaddr):
    ipStrs = ipaddr.split(".")

    return str(int(ipStrs[3]) + int(ipStrs[2])*256 + int(ipStrs[1])*256*256 + int(ipStrs[0])*256*256*256) 


def bigintToIp(intStr):
    bigint = int(intStr)

    first = bigint/(256*256*256)
    rest = bigint - (first*256*256*256)
    
    second = rest/(256*256)
    rest -= second*256*256
    
    third = rest/256    
    fourth = rest - third * 256
    
    return "%d.%d.%d.%d"%(first,second,third,fourth)


if __name__ == "__main__":
    while 1:
        if len(sys.argv) > 1:
            ipOrInt = sys.argv[1]
        else:
            ipOrInt = raw_input("Please input the IP/Int ->")

        if ipOrInt.find(".") > 0 :
            print "%s <-> %s"%(ipOrInt,ipToBigint(ipOrInt))
        else:
            print "%s <-> %s"%(ipOrInt,bigintToIp(ipOrInt))

 

运行截图: