在Python中如何将十六进制ASCII字符串转换为原始内部二进制字符串?
在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")
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。