字节编码Python 3中的IP地址并转换回字符串

时间:2017-10-19 05:42:37

标签: python-3.x networking udp ip

我试图在Python3中创建示例UDP数据包标头:

# "encoding"
header = bytearray()
ip = '192.168.1.1'
ip_bytes = bytes(map(int, ip.split('.')))
header.extend(ip_bytes)
port = 5555    
header.extend(port.to_bytes(2, 'big'))
print(header)
print()

# "decoding"
destip = header[:4]
ips = ""
for i in destip:
    byt = int.from_bytes(destip[i:i+1], 'big')
    ips += str(byt) + "."
ips = ips[:len(ips)-1]
print(ips)

输出是:

bytearray(b'\xc0\xa8\x01\x01\x15\xb3')

bytearray(b'\xc0\xa8\x01\x01')
0.0.168.168

我想要的是第二行:

192.168.1.1

任何人都知道我哪里出错了?

1 个答案:

答案 0 :(得分:1)

不要将ip_arg字符串转换为int,19216811不是您要编码的int。 192.168.1.1 = 3232235777作为int。您可以执行与您在解码部分中所做的相反的操作并转换每个八位字节。