在Python中发送十六进制数据包

6 投票
1 回答
17427 浏览
提问于 2025-04-17 03:45

我该如何在一个数据包中发送十六进制数据呢?我想要精确复制一个数据包,使用十六进制而不是ASCII字符。我只想知道,如果我需要发送的十六进制数据是00AD12,那么sendto函数的参数应该是什么样的。

1 个回答

12

使用 struct 可以在字节(通常以十六进制表示)和数字之间进行转换:

>>> import struct
>>> struct.pack('!I', 0xAD12)
b'\x00\x00\xad\x12'

如果你有一个十六进制的 字符串,想把它转换成字节,可以使用 binascii.unhexlify

>>> import binascii
>>> binascii.unhexlify('ad12')
b'\xad\x12'

撰写回答