Python字符串与二进制字符串之间的转换

Python字符串与二进制字符串之间的转换

  • 说明
  • 字符串转二进制字符串
  • 二进制字符串转字符串

说明

字符串:可以包含任意字符
二进制字符串:转换结果的长度为8的倍数

涉及的内容:

  • 字符串与bytes类型的互相转换
  • bytes类转与 list 列表的互相转换
  • bin函数的使用
  • int函数的使用
  • 字符串转二进制字符串

步骤:

  1. 将字符串转成bytes类型
  2. 将bytes类型转成list类型(元素为int型)
  3. 将list的每个元素转成二进制字符串(数值在0-255之间),指定长度为8位
  4. 拼接每个元素转成的二进制字符串

实现:

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'
  • 二进制字符串转字符串

步骤:

  1. 将二进制字符串进行切分,每8位为一组
  2. 将每一组的二进制字符串转成int类型,以列表类型存储
  3. 将列表转为bytes类型
  4. 将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'

你可能感兴趣的:(Python学习,python,学习,开发语言)