python中带b字符串转换

问题背景

在使用 dbm 模块中,使用 str 作为 key 进行 kv 存储,但是在进行转换过程中,发现 key 变成了 b'xxxx' 这种类型,在于其他字符串进行比较判断报错,原因是该类型是 bytes 类型,而不是 str 类型

问题原因

  • bytes主要是给计算机看的,string主要是给人看的
  • 中间有个桥梁就是编码规则,现在大趋势是utf8
  • bytes对象是二进制,很容易转换成16进制,例如\x64
  • string就是我们看到的内容,例如'abc'
  • string经过编码encode,转化成二进制对象,给计算机识别
  • bytes经过反编码decode,转化成string,让我们看,但是注意反编码的编码规则是有范围,\xc8就不是utf8识别的范围

解决方案

直接将该bytes类型进行decode()即可


相关主题: