【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进制格式。

【Python网络编程系列】将IPv4地址转为不同格式,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。