我试着翻译流0,1字符,而不使用其他库,例如“你好世界”: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">>>
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
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'
一只甜甜圈
TA贡献1836条经验 获得超5个赞
该函数一次取 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 表使用 8。)
添加回答
举报
0/150
提交
取消