二进制文字到python中的二进制字符串转换

时间:2014-01-01 19:42:38

标签: python string binary literals

我想将像0b01011这样的二进制文字转换为二进制字符串,如0101101101。 我应该怎么去这里。

这里假设A = 81(十六进制)

>>> a = bin(int(str('A'),16))
>>> print a 

返回0b1010,我想要10000001(二进制字符串)

4 个答案:

答案 0 :(得分:5)

使用python的新字符串处理:

>>> print '{:08b}'.format(81)
01010001

>>> print '{:08b}'.format(ord('A'))
01000001

'08'指定输出大小为8,用零填充,因此默认情况下显示整个字节。如果没有零,则用空格填充:

>>>  print '{:8b}'.format(ord('A'))
 1000001

没有'8',输出字符串只有所需的大小:

>>> print '{:b}'.format(ord('A'))
1000001

答案 1 :(得分:1)

我没有真正得到你所要求的东西,但你可以做你已经做过的事情并切断0b

>>> bin(0b110110)[2:]
'110110'

输入二进制文字时,它会变成一个数字。这个数字并不取决于它在二元或任何其他基数中的表示;它只是存储为整数值。因此,无论您是否将其作为二进制文字输入都无关紧要,您仍然可以使用bin来获取其二进制字符串表示。

答案 2 :(得分:1)

您需要使用ord函数将字符串'A'转换为相应的ASCII字符。 (将str应用于'A'无法实现任何目标。)然后您可以将该整数转换为二进制字符串,因此:

>>> print ord('A')
65
>>> a = bin(ord('A'))
>>> print a
0b1000001

如果您不想要'0b'前缀:

>>> print a[2:]
1000001

答案 3 :(得分:1)

据我了解(根据评论),您可以将数字设为整数

A = 81

然后你想解释它为十六进制。为了做到这一点,将其转换为字符串(请注意,我投射变量A,而不是字符串'A'):

str(A)

然后将其转换为int base 16:

int(str(A), 16)

最后将其转换为二进制表示形式:

bin(int(str(A), 16))

并从第二个位置获取所有字符(省略前两个):

bin(int(str(A), 16))[2:]