python:十六进制值到二进制的字符串

2024-10-01 07:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的输入示例:

a = 41cf4a077a7454

它们代表十六进制值,x41xcfx4a等等。。。在

我需要将它们转换成一个类似这样的二进制字符串(期望的输出):

^{pr2}$

x41=01000001 xCF=11001111 x4A=01001010 等。。。在

我以前的代码是这样的:

return bin(int(str(a), 16))[2:]

但是,它会生成前面没有零的字符串:

1000001110011110100101000000111011110100111010001010100

当它被解释为一个整数时,它似乎被切掉了。 有没有一种方法可以保持零,因为不是每个被转换的字符串都以二进制中的零开头。在

我希望这有道理。谢谢您。在


Tags: 字符串代码示例returnbin二进制代表整数
2条回答

一线解决方案:

>>> a = '41cf4a077a7454'
>>> ''.join('{0:08b}'.format(int(x, 16)) for x in (a[i:i+2] for i in xrange(0, len(a), 2)))
'01000001110011110100101000000111011110100111010001010100'

或解决方案的扩展:

^{pr2}$

这个解决方案对你有用。在

>>> a = '41cf4a077a7454'
>>> b = [a[2*i]+a[2*i+1] for i in range(len(a)/2)]
 ['41', 'cf', '4a', '07', '7a', '74', '54']
>>> c = map(lambda x: "{0:08b}".format(int(x, 16)), b)
['01000001',
 '11001111',
 '01001010',
 '00000111',
 '01111010',
 '01110100',
 '01010100']
>>> "".join(c)
'01000001000111001100111111110100010010101010000000000111'

相关问题 更多 >