在Python中如何将十六进制ASCII字符串转换为原始内部二进制字符串?

13 投票
5 回答
28917 浏览
提问于 2025-04-17 08:02

在Python中,如何将十六进制的ASCII字符串转换成二进制字符串呢?

举个例子:

01000001B8000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435362021222324

这个字符串需要转换成二进制字符串。这里的0A需要转换成1010,而不是转换成ASCII位1000001(这个是65)。

编辑:为了更清楚,把问题中的“原始二进制”改成了“原始内部二进制”字符串。

5 个回答

7

你可能需要用到字符串的 .decode('hex') 方法(适用于 Python 2.x)。

data= ("01000001B8000102030405060708090A0B0C0D0E0F10111213141516"
    "1718191A1B1C1D1E1F202122232425262728292A2B"
    "2C2D2E2F303132333435362021222324")
data.decode('hex')

另外,你也可以使用 base64.b16decode,不过如果你的输入包含小写的十六进制数字 A 到 F,建议把第二个参数(casefold)设为 True。

8

这就是你在找的东西吗?

hex_string = '0A'
'{0:b}'.format(int(hex_string, 16))
# returns '1010'

或者

''.join('{0:04b}'.format(int(c, 16)) for c in hex_string)
16
import base64
data = base64.b16decode("01000001B8000102030405")

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答