我想将一些输入ASCII字符转换为字节。例如来自' a'至01100001 我读过像this这样的答案。但有时它给出0b10000110像9位数值。我不确定这是错误还是它的工作方式。 我做了这样的事情:
text = list(input("text: "))
for character in text:
if character == ' ':
byt = '00000000'
else:
byt = bin(ord(character))
byt = byt.replace('b', '') #delete the 'b' in the output
if len(byt) != 8:
byt = '0' + byt
print(byt)
它与普通人物一起工作得很好。但是当我输入奇怪的字符时,如:' B
它输出非常奇怪:
001110
00100111
0010000000
01000010
我对Python不太熟悉,所以我不知道是否有办法可以编写函数或其他方法来执行此操作。
我正在使用Python 3.6
非常感谢
答案 0 :(得分:3)
您正在寻找的洞察力是:
>>> '{:08b}'.format(121)
'01111001'
>>> '{:08b}'.format(7)
'00000111'
<强>更新强>
正如Martijn Pieters所建议的那样,内置format
函数非常优越:
>>> format(121, '08b')
'01111001'
>>> format(7, '08b')
'00000111'
更新2
刚才意识到这个问题被标记为重复。 Pieters给出了格式答案here,并详细说明了它的工作原理。