在Python中发送十六进制数据包
我该如何在一个数据包中发送十六进制数据呢?我想要精确复制一个数据包,使用十六进制而不是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'