将一个十六进制字节数组转换为python中的IP地址

3

我有一个以这种格式表示的IP地址

b'\xd4\xfbuW'

我知道这是一个真实的IP地址,但我不知道如何将其打印为普通的(例如192.168.1.1)地址并将其存储在我的内存中作为字符串。 我该如何解码此十六进制字节数组?

2个回答

4

不需要使用socket模块。

如果你使用的是Python 3.6或以上版本,可以使用以下代码:

print('.'.join(f'{c}' for c in b'\xd4\xfbuW'))

否则。
print('.'.join(str(c) for c in b'\xd4\xfbuW'))

2
您可以使用socket模块的函数,例如:
import socket

ip_string = '192.168.1.1'
print(socket.inet_aton(ip_string))
print(socket.inet_ntoa(socket.inet_aton(ip_string)))
print(socket.inet_pton(socket.AF_INET, '192.168.1.1'))
print(socket.inet_ntop(
    socket.AF_INET, socket.inet_pton(socket.AF_INET, '192.168.1.1')))

packed_ip = b'\xd4\xfbuW'
print(socket.inet_ntoa(b'\xd4\xfbuW'))

输出

b'\xc0\xa8\x01\x01'
192.168.1.1
b'\xc0\xa8\x01\x01'
192.168.1.1
212.251.117.87

如您所见,192.168.1.1 对应于 \xC0\xA8\x01\x01,而 b'\xd4\xfbuW' 则是 212.251.117.87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接