我正在尝试将二进制转换为十进制到ASCII。使用此代码,我可以将二进制输入并将其分成7位的块。
def binary_to_ascii7bits(bstring):
n = 7
byte = [bstring[i:i+n] for i in range(0, len(bstring), n)]
print(byte)
我需要能够将每个7位子字符串转换为十进制数,以便使用chr函数。如果我尝试将这个列表转换为字符串,它会打印出"['1111000']",但是我不能在字符串中使用括号和撇号。我能做些什么来解决这个问题?
首先,对于chr
函数,它应该是整数,而不是小数。
在print函数之前添加这个列表推导式-
byte = [chr(64 + int(i)) for i in byte]
这将给出字节的字符串。我想这就是你想要的。
您可以再添加一行(如下所示)来实现您所描述的。
您使用int(..., 2)
将二进制数的字符串表示形式转换为整数。然后应用chr
得到一个字符。这个过程是使用(list)推导式完成的,因此结果是一个字符列表。然后使用join
生成单个字符串。
text = '1111000' * 10
def binary_to_ascii7bits(bstring):
n = 7
byte = [bstring[i:i+n] for i in range(0, len(bstring), n)]
return ''.join(chr(int(x, 2)) for x in byte)
print(binary_to_ascii7bits(text)) # xxxxxxxxxx