python ip地址与整形互转

为什么要将ip转int,这是为了数据库保存ip地址时可以使用整形字段保存,性能更高
转换后同样可以使用整形进行访问网站,即http://47.74.189.133 = http://793427333

使用socket 和 struct

def ip_to_int(ip):
    """ip地址转数字"""
    import socket
    import struct
    return socket.ntohl(struct.unpack("I", socket.inet_aton(str(ip)))[0])

def int_to_ip(num):
    '''整形转ip地址'''
    import socket
    import struct
    return socket.inet_ntoa(struct.pack("!I", num))
if __name__ == '__main__':
    print(ip_to_int('47.74.189.133'))  # 793427333
    print(int_to_ip(793427333))  # 47.74.189.133

其实这是进制的转换。可以不用三方包手写转换

func = lambda x: '.'.join([str(int(x / (256 ** i) % 256)) for i in range(3, -1, -1)])
func(793427333)
func = lambda x: sum([256 ** j * int(i) for j, i in enumerate(x.split('.')[::-1])])
func('47.74.189.133')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,142评论 1 32
  • 套接字是网络通信的基石,是网络通信的基本构建,最初是由加利福利亚大学Berkeley分校为UNIX开发的网络通信编...
    Super超人阅读 4,294评论 0 26
  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 2,088评论 0 6
  • 地址:http://www.cnblogs.com/taoxu/p/7064103.html 写在准备动手的时候:...
    wvqusrtg阅读 2,882评论 1 19
  • socket通信原理 socket又被叫做套接字,它就像连接到两端的插座孔一样,通过建立管道,将两个不同的进程之间...
    jiodg45阅读 1,184评论 0 1