Python字符串与二进制字符串之间的转换
- 说明
- 字符串转二进制字符串
- 二进制字符串转字符串
说明
字符串:可以包含任意字符
二进制字符串:转换结果的长度为8的倍数
涉及的内容:
- 字符串与bytes类型的互相转换
- bytes类转与 list 列表的互相转换
- bin函数的使用
- int函数的使用
-
字符串转二进制字符串
步骤:
- 将字符串转成bytes类型
- 将bytes类型转成list类型(元素为int型)
- 将list的每个元素转成二进制字符串(数值在0-255之间),指定长度为8位
- 拼接每个元素转成的二进制字符串
实现:
text = "我的世界123abc"
b_text = text.encode() # b'\xe6\x88\x91\xe7\x9a\x84\xe4\xb8\x96\xe7\x95\x8c123abc'
list_b_text = list(b_text)
# [230, 136, 145, 231, 154, 132, 228, 184, 150, 231, 149, 140, 49, 50, 51, 97, 98, 99]
re = []
for num in list_b_text:
re.append(bin(num)[2:].zfill(8))
"""
['11100110', '10001000', '10010001', '11100111', '10011010', '10000100', '11100100', '10111000', '10010110', '11100111', '10010101', '10001100', '00110001', '00110010', '00110011', '01100001', '01100010', '01100011']
"""
bin_str = ''.join(re)
# '111001101000100010010001111001111001101010000100111001001011100010010110111001111001010110001100001100010011001000110011011000010110001001100011'
-
二进制字符串转字符串
步骤:
- 将二进制字符串进行切分,每8位为一组
- 将每一组的二进制字符串转成int类型,以列表类型存储
- 将列表转为bytes类型
- 将bytes类型转为字符串
实现:
bin_str='111001101000100010010001111001111001101010000100111001001011100010010110111001111001010110001100001100010011001000110011011000010110001001100011'
list_bin = [bin_str[i:i+8] for i in range(0,len(bin_str),8)]
"""
['11100110', '10001000', '10010001', '11100111', '10011010', '10000100', '11100100', '10111000', '10010110', '11100111', '10010101', '10001100', '00110001', '00110010', '00110011', '01100001', '01100010', '01100011']
"""
list_int = []
for bin_s in list_bin:
list_int.append(int(bin_s,2))
# [230, 136, 145, 231, 154, 132, 228, 184, 150, 231, 149, 140, 49, 50, 51, 97, 98, 99]
bytes(list_int).decode()
# '我的世界123abc'