Python将ASCII字符转换为字节

时间:2017-07-20 07:08:13

标签: python python-3.x

我想将一些输入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
非常感谢

1 个答案:

答案 0 :(得分:3)

您正在寻找的洞察力是:

>>> '{:08b}'.format(121)
'01111001'
>>> '{:08b}'.format(7)
'00000111'

<强>更新

正如Martijn Pieters所建议的那样,内置format函数非常优越:

>>> format(121, '08b')
'01111001'
>>> format(7, '08b')
'00000111'

更新2

刚才意识到这个问题被标记为重复。 Pieters给出了格式答案here,并详细说明了它的工作原理。