【Python网络编程系列】将IPv4地址转为不同格式
当你处理底层网络函数,有事,通常IP地址表示法可能不大有用。它们需要转为32位二进制格式。
Python socket库有工具可以处理各种IP地址格式。这里,我们使用了两个:inetaton()和inetntoa()
我们来创建convertip4address()函数,用来使用inetaton和inetatoa进行IP地址转换。我们使用两个示例地址,127.0.0.1和192.168.0.1
#!/usr/bin/env python
import socket
from binascii import hexlify
def convert_ip4_address(ip_address):
packed_ip_address = socket.inet_aton(ip_address)
unpacked_ip_address = socket.inet_ntoa(packed_ip_address)
print("IP Address: %s => Packed: %s, Unpacked: %s" % (
ip_address, hexlify(packed_ip_address), unpacked_ip_address))
if __name__ == "__main__":
for ip_address in [‘127.0.0.1‘, ‘192.168.0.1‘]:
convert_ip4_address(ip_address)
输出:
IP Address: 127.0.0.1 => Packed: b‘7f000001‘, Unpacked: 127.0.0.1
IP Address: 192.168.0.1 => Packed: b‘c0a80001‘, Unpacked: 192.168.0.1
本节,两个IP地址被转换成了32位格式。例外,Python的hexlify函数在binascii模块。帮助我们将2进制格式呈现为16进制格式。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。