用Python将IP地址在整型和字符串之间轻松转换

1159次阅读  |  发布于5年以前

前言

大家应该都有所体会,对于字符串型的IP存入数据库中,实在是个即浪费空间又浪费性能的家伙,所以可爱的人们想出来将IP转换为整型存储。MySQL中存在INET_ATON()INET_NTOA()函数进行IP整型和字符串之间的转换,那么Python中存在什么方法可以实现MySQL中INET_ATON()INET_NTOA()的功能呢?方法肯定是有的~

方法如下


    # 导入相关模块包
    import socket
    import struct
    # 将IP从字符串转为整型
    >>> int(socket.inet_aton('127.0.0.1').encode('hex'),16)
    2130706433
    # 将IP从整型转为字符串
    >>> socket.inet_ntoa(struct.pack("!I",2130706433))
    '127.0.0.1'

拓展

Python下利用正则表达式来匹配校验一个字符串是否为ip地址


    def checkip(ip): 
     p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$') 
     if p.match(ip): 
     return True 
     else: 
     return False 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8