想对一串十六进制的字符串(如“00FF00”)进行 zlib 压缩,并返回同样十六进制的字符串:
test = b'00FF00'
print(zlib.compress(test))
结果返回 b'x\x9c30ps30\x00\x00\x04\x90\x01M'
这样的 Bytes 类型对象,里面包含 ps
和 M
这样的字符,无法对其进行解码 decode('UTF-8')
,只会报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9c in position 1: invalid start byte
查询 Python Zlib 官方文档 也没能找到原因,只知道 zlib.compress()
方法要求必须输入 Bytes 类型的数据,结果返回一个 Bytes 类型的对象。
如何将方法 zlib.compress()
返回的值转换成十六进制的字符串?求大神解答。
结果还是bytes呀。你想以16进制字符串形式查看压缩后的结果的话