首页 > 解决方案 > 如何将二进制字符串转换为字节?

问题描述

如果我将字母 'à' 编码为 UTF-8,我会得到以下结果:

'à'.encode('utf-8')
>> b'\xc3\xa0'

现在,我想从一个字节数组将“à”转换为二进制字符串并将其转回“à”。为此,我执行以下代码:

byte = bytearray('à','utf-8')
for x in byte:
    print(bin(x))

我得到0b11000011and 0b10100000,即 195 和 160。然后,我将它们融合在一起并取出0b零件。现在我执行这段代码:

s = '1100001110100000'
value1 =  s[0:8].encode('utf-8')
value2 =  s[9:16].encode('utf-8')
value = value1 + value2
print(chr(int(value, 2)))
>> 憠

无论我如何开发后面的部分,我都会得到符号并且似乎永远无法找回我的“à”。我想知道这是为什么?我怎样才能得到一个'à'。

标签: pythonunicodeutf-8utf

解决方案


>>> bytes(int(s[i:i+8], 2) for i in range(0, len(s), 8)).decode('utf-8')
'à'

这有多个部分。构造bytes函数从整数序列创建一个字节字符串。整数是由使用int以 2 为底的字符串组成的。range结合切片一次可以剥离 8 个字符。最后decode将这些字节转换回 Unicode 字符。


推荐阅读