python字符串转⼆进制代码_python如何将⼆进制串(UTF-
8)转换为字符串?
已知⼀个⼆进制串(UTF-8编码格式)列表(每⼀项为⼀字节8bit):
b=['01010000', '01111001', '01110100', '01101000', '01101111', '01101110', '11100101', '10100100', '10100111',
'11100110', '10110011', '10010101']
#即字符串"Python⼤法"
如何将其转换为字符串呢?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))。
那么请教⼤家,这样的思路该如何实现?或者各路⼤神有什么简便算法呢?抑或是有相关模块可以做这样的处理呢?(初⼊勿怪)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论