Python 3-将字节字符串转换为内容相同的字符串

时间:2018-12-14 13:17:58

标签: python python-3.x byte python-2.x

我正在将项目代码从Python 2迁移到Python 3。 一段代码是使用struct.pack,它为我提供了string(Python2)和byte字符串(Python3)的值 我想将python3中的字节字符串转换为普通字符串。转换后的字符串应具有相同的内容,以使其与现有值一致。 例如。

in_val = b'\0x01\0x36\0xff\0x27' # Input value
out_val = '\0x01\0x36\0xff\0x27' # Output should be this

我有一种解决方案,可以将in_val转换为字符串,然后显式删除将其转换为字符串后出现的'b'和'\'字符。

是否有其他解决方案可以使用干净的方式进行转换。 任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

str值始终是 Unicode代码点。前256个值是 Latin-1 范围,因此您可以使用该编解码器将字节直接解码为这些代码点:

out_val = in_val.decode('latin1')

但是,您想重新评估为什么要这样做。不要将二进制数据存储在字符串中,几乎总是有更好的方法来处理二进制数据。例如,如果要将二进制数据存储在JSON中,则需要使用Base64或其他一些二进制到文本编码方案,这些方案可以更好地处理边缘情况,例如当解释为文本时包含转义码的二进制数据。