欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python转二进制字符串_python如何将二进制串(UTF-8)转换为字符串?

发布时间:2025/3/12 python 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python转二进制字符串_python如何将二进制串(UTF-8)转换为字符串? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

已知一个二进制串(UTF-8编码格式)列表(每一项为一字节8bit):

b=['01010000', '01111001', '01110100', '01101000', '01101111', '01101110', '11100101', '10100100', '10100111', '11100110', '10110011', '10010101']

#即字符串"Python大法"

如何将其转换为字符串呢?

string = ""

for i in b:

string += chr(int(i,2))

print(string)

#这种方式对应纯ASCII编码的字符串是可以的

但UTF-8不可以,我们知道UTF-8是变长的,一个字符通常要占到3个甚至4个字节,上述代码运行结果是:

'Python大æ³x95'

很明显因为中文字符占到三个字节,自然每个字节chr()一次自然会乱码。那又该如何处理变长的UTF-8编码呢?

附:

UTF-8编码方式:

1.对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母, UTF-8编码和ASCII码是相同的。

2.对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

这里我想到一个处理多字节UTF-8的思路,大家看看是否可行:

(循环)当检测到一项的前两位是"11"时,用正则提出前面的所有1,即这个字符所占字节数,然后找到后面的字节,去掉10,然后将这几个字节去掉前面的部分("1110"/"10")后剩下的合并,就是这个字符对应的Unicode编码了,然后chr(int(i,2))。

那么请教大家,这样的思路该如何实现?或者各路大神有什么简便算法呢?抑或是有相关模块可以做这样的处理呢?(初入勿怪)

总结

以上是生活随笔为你收集整理的python转二进制字符串_python如何将二进制串(UTF-8)转换为字符串?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。