python - 如何将二进制字符串转换为字节?
问题描述
如果我将字母 'à' 编码为 UTF-8,我会得到以下结果:
'à'.encode('utf-8')
>> b'\xc3\xa0'
现在,我想从一个字节数组将“à”转换为二进制字符串并将其转回“à”。为此,我执行以下代码:
byte = bytearray('à','utf-8')
for x in byte:
print(bin(x))
我得到0b11000011
and 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)))
>> 憠
无论我如何开发后面的部分,我都会得到符号并且似乎永远无法找回我的“à”。我想知道这是为什么?我怎样才能得到一个'à'。
解决方案
>>> 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 字符。
推荐阅读
- amazon-cloudformation - 在 cloudformation 中启用 SNS 传递状态日志配置
- sql - 有没有办法在不填满日志的情况下重建碎片索引?
- python - 如何告诉 pip 在哪里可以找到安装包所需的依赖项?包是pybgpstream,依赖是bgpstream
- azure - 如果主题尚不存在,如何自动创建主题订阅?
- sql - case 表达式中的 charindex
- javascript - 动态表格提交表单
- sql - 这个 SQL 模式是否灵活并针对用户/组 + 权限场景进行了优化?
- python-3.x - BeautifulSoup findAll() 两次返回类内容
- c++ - Waveshare 电子纸 ESP32 开发板上的 HTTP 客户端管理问题
- python - 这个许可条款作为“GPL (>= 3) | file LICENCE”是什么意思?