将十六进制的bytearray转换为IP地址python

时间:2017-09-21 11:36:28

标签: python ip hex byte

我有这种格式的IP地址

b'\xd4\xfbuW'

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

2 个答案:

答案 0 :(得分:2)

您不需要套接字模块。

如果您具有Python 3.6或更高版本,则可以使用:

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

否则

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

答案 1 :(得分:1)

您可以使用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\x01b'\xd4\xfbuW'将对应212.251.117.87