如何将HEX数据转换为BINARY数据?

时间:2011-07-13 15:44:57

标签: python

我正在尝试使用python raw socket发送二进制数据。 为此,我会做以下。

s = '\x01\x00\x12\x59' # some binary data
sock.send(s)           # assuming "sock" is a valid, open socket object

我通过使用wireshark嗅探网络流量在HEX中创建了一个DATAGRAM。我想通过网络发送。这个手工制作的数据报就像

“04 f8 00 50 4f 30 fb 47 28 62 a7 6d 50 02 02 00 d2 7f 00 00”

所以我想将上面提到的HEX数据报转换成二进制格式,如“\ x01 \ x00 \ x12 \ x59”。 我怎么能这样做?

3 个答案:

答案 0 :(得分: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')

OR:

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()))

答案 1 :(得分:4)

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

答案 2 :(得分:0)

unhexlify可能就是你要找的东西。它不喜欢空格,所以对于你的例子,unhexlify(data.replace(" ",""))应该有效。