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

6 投票
3 回答
7307 浏览
提问于 2025-04-16 21:26

我正在尝试使用 Python 的原始套接字发送二进制数据。为此,我将进行以下操作。

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

我通过使用 Wireshark 监控网络流量,创建了一个十六进制的 DATAGRAM。我想把它发送到网络上。这个手动制作的 DATAGRAM 看起来像这样:

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

所以我想把上面提到的十六进制 DATAGRAM 转换成像 "\x01\x00\x12\x59" 这样的二进制格式。我该怎么做呢?

3 个回答

0

unhexlify 可能正是你需要的工具。它不喜欢空格,所以在你的例子中,使用 unhexlify(data.replace(" ","")) 这样的方法应该可以解决问题。

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

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能没有按照预期工作。这时候,你可能会去网上查找解决方案,比如在StackOverflow这样的论坛上提问。

在提问时,最好能提供一些具体的信息,比如你使用的编程语言、遇到的错误信息,以及你尝试过的解决方法。这样,其他人才能更好地理解你的问题,并给出有效的建议。

记住,清晰明了的问题描述可以帮助你更快找到答案,也能让别人更愿意帮助你。

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

撰写回答