如果要使用低层网络函数,有时普通的字符串形式的IP地址并不是很有用,需要把它们转换成打包后的32位二进制格式。
Python的socket库提供了很多用来处理不同IP地址格式的函数,这里使用其中:inet_aton() 和 inet_ntoa() 函数。
定义convert_ip4_address()函数,调用inet_aton()和inet_ntoa()转换IP地址,使用两个示例IP地址:127.0.0.1和192.168.0.1。
import socket
from binascii import hexlify
def convert_ip4_address():
for ip_addr in ['127.0.0.1', '192.168.0.1']:
packed_ip_addr = socket.inet_aton(ip_addr)
unpacked_ip_addr = socket.inet_ntoa(packed_ip_addr)
print("IP Address: {} => Packed: {}, Unpacked: {}".format(ip_addr, hexlify(packed_ip_addr), unpacked_ip_addr))
if __name__ == '__main__':
convert_ip4_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
本文介绍了如何使用Python的socket库将IPv4地址转换为32位二进制格式。通过示例展示了convert_ip4_address()函数,利用inet_aton()和inet_ntoa()进行转换,涉及IP地址127.0.0.1和192.168.0.1。
448

被折叠的 条评论
为什么被折叠?



