假设我在一个字符串中有一些ASCII字符,比如说s = ABC
,我如何才能检索字符串形式的二进制表示形式?
在这种情况下
A = '01000001'
B = '01000010'
C = '01000011'
所以我想要类似make_binary('ABC')
的东西返回'010000010100001001000011'
我知道我可以获取字符串的十六进制值。我知道我可以得到整数的二进制表示形式。我不知道是否有办法将所有这些部分绑在一起。
答案 0 :(得分:4)
使用ord()
函数来获取每个字符的整数编码。
def make_binary(s):
return "".join([format(ord(c), '08b') for c in s])
print(make_binary("ABC"))
08b
格式返回以8位开头为零的数字格式。
答案 1 :(得分:2)
我认为另一个答案是错误的。也许我误解了这个问题。
无论如何,我认为您要求的是“位”表示。二进制通常用于字节表示(.bin文件等)
字节表示形式是由编码给出的,因此您应该对字符串进行编码,然后将得到一个字节数组。这是您的二进制(以字节为单位)表示形式。
但是您似乎在问“位表示”。那是不同的(另一个答案,恕我直言是错误的)。您可以像其他答案一样将字节数组转换为位表示形式。注意:您正在转换字节。如果只显示一个字节的二进制表示形式,则对于127以上的任何字符,另一个答案将失败。
所以:
def make_binary(s):
return "".join(format(c, '08b') for c in s.encode('utf-8'))
和测试(@Barmar上的哪个文件)。
>>> print(make_binary("ABC"))
010000010100001001000011
>>> print(make_binary("Á"))
1100001110000001