分享

python中字符串形式的IP地址(点分十进制)和其整数形式的相互转换

 心不留意外尘 2016-05-01

http://blog.sina.com.cn/s/blog_6a1837e90100rszt.html

2011

   在 PHP 中,有 ip2long() 和 long2ip() 来个函数来实现 IP 地址的点分十进制字符串形式和其长整数形式之间的转换,Python 中,我没找到类似的函数,所以就自己实现一个简单形式的了。

import socket
import struct

def ip2long (ip):
    "将点分十进制 IP 地址转换成无符号的长整数"

    return struct.unpack("!I", socket.inet_aton(ip))[0]

def long2ip (lint):
    "将无符号长整形转换为点分十进制 IP 地址形式"

    return socket.inet_ntoa(struct.pack("!I", lint))

    因为需要的是无符号的长整形数,所以,在转换时, struct.unpack() 和 struct.pack() 中使用的是 “!I” ,而不是直接使用 “I” ,这样实际上就已经做了 network byte 到 host byte 之间的处理了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多