我想将像0b01011这样的二进制文字转换为二进制字符串,如0101101101。 我应该怎么去这里。
这里假设A = 81(十六进制)
>>> a = bin(int(str('A'),16))
>>> print a
返回0b1010,我想要10000001(二进制字符串)
答案 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:]