如何将十六进制数据转换为二进制数据?

6
我正在尝试使用Python原始套接字发送二进制数据。为此,我将执行以下操作。
s = '\x01\x00\x12\x59' # some binary data
sock.send(s)           # assuming "sock" is a valid, open socket object

我通过使用Wireshark嗅探网络流量创建了一个十六进制的数据报文,现在我想将它发送到网络上。这个手工制作的数据报文看起来像这样:"04 f8 00 50 4f 30 fb 47 28 62 a7 6d 50 02 02 00 d2 7f 00 00"。那么我想将上述十六进制数据报文转换为二进制格式,如"\x01\x00\x12\x59"。请问我该如何做?
3个回答

4
"04 f8 00 50".replace(' ', '').decode('hex')

4

请尝试以下代码:

"".join("04 f8 00 50 4f 30 fb 47 28 62 a7 6d 50 02 02 00 d2 7f 00 00".split()).decode('hex')

或:

import binascii
print binascii.unhexlify("".join("04 f8 00 50 4f 30 fb 47 28 62 a7 6d 50 02 02 00 d2 7f 00 00".split()))

0

unhexlify 可能是你正在寻找的。它不喜欢空格,所以对于你的例子,unhexlify(data.replace(" ","")) 应该可以工作。


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