如何将“0”和“1”流翻译成字符?
How to translate a stream of '0' and '1' to characters?
我正在尝试将 0
、1
的流翻译成字符,
不使用其他库,
例如'Hello World':
0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100
我发现了这样的东西:
def BinaryToString(binary):
bingen = (binary[i:i+7] for i in range(0, len(binary), 7))
return ''.join(chr(eval('0b'+n)) for n in bingen)
但是当我尝试翻译时,答案是这样的:
>>> BinaryToString("0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100")
"$\x11)Db<@W'TID\x04"
>>>
该函数一次取 7 个二进制数字并将它们转换为一个字符。改成一次转换8位数字。
def BinaryToString(binary):
bingen = (binary[i:i+8] for i in range(0, len(binary), 8))
return ''.join(chr(eval('0b'+n)) for n in bingen)
这完全取决于您的原始文本的编码方式,但它适用于您提供的示例。 (ASCII 最初定义为使用 7 位。扩展 ASCII table 使用 8。)
int
需要第二个参数来指定基数,所以你可以使用类似 int("00001110", 2)
的东西来得到 14.
>>> binary = "0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100"
>>> ''.join([chr(int(binary[i:i+8], 2)) for i in range(0, len(binary), 8)])
'HELLO WORLD'
我正在尝试将 0
、1
的流翻译成字符,
不使用其他库,
例如'Hello World':
0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100
我发现了这样的东西:
def BinaryToString(binary):
bingen = (binary[i:i+7] for i in range(0, len(binary), 7))
return ''.join(chr(eval('0b'+n)) for n in bingen)
但是当我尝试翻译时,答案是这样的:
>>> BinaryToString("0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100")
"$\x11)Db<@W'TID\x04"
>>>
该函数一次取 7 个二进制数字并将它们转换为一个字符。改成一次转换8位数字。
def BinaryToString(binary):
bingen = (binary[i:i+8] for i in range(0, len(binary), 8))
return ''.join(chr(eval('0b'+n)) for n in bingen)
这完全取决于您的原始文本的编码方式,但它适用于您提供的示例。 (ASCII 最初定义为使用 7 位。扩展 ASCII table 使用 8。)
int
需要第二个参数来指定基数,所以你可以使用类似 int("00001110", 2)
的东西来得到 14.
>>> binary = "0100100001000101010011000100110001001111001000000101011101001111010100100100110001000100"
>>> ''.join([chr(int(binary[i:i+8], 2)) for i in range(0, len(binary), 8)])
'HELLO WORLD'