为了账号安全,请及时绑定邮箱和手机立即绑定

如何将二进制字符串转换为字节?

如何将二进制字符串转换为字节?

白衣非少年 2021-08-24 18:28:07
如果我将字母 'à' 编码为 UTF-8,我会得到以下结果:'à'.encode('utf-8')>> b'\xc3\xa0'现在从字节数组中,我想将 'à' 转换为二进制字符串并将其重新转换为 'à'。为此,我执行以下代码:byte = bytearray('à','utf-8')for x in byte:    print(bin(x))我得到0b11000011和0b10100000,即 195 和 160。然后,我将它们融合在一起并取出0b部分。现在我执行这段代码:s = '1100001110100000'value1 =  s[0:8].encode('utf-8')value2 =  s[9:16].encode('utf-8')value = value1 + value2print(chr(int(value, 2)))>> 憠无论我如何开发后面的部分,我都会得到符号并且似乎永远无法找回我的“à”。我想知道这是为什么?我怎么能得到一个'à'。
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

>>> 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 字符。


查看完整回答
反对 回复 2021-08-24
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

你需要你的第二位是s[8:16](或只是s[8:])否则你会得到0100000


您还需要将“位字符串”转换回整数,然后再将其视为一个字节 int("0010101",2)


s = '1100001110100000'

value1 =  bytearray([int(s[:8],2), # bits 0..7 (8 total)

                     int(s[8:],2)] # bits 8..15 (8 total)

print(value1.decode("utf8"))


查看完整回答
反对 回复 2021-08-24
  • 3 回答
  • 0 关注
  • 414 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号