python3字节 转字符串 再转回字节,怎么不一样了?


import gzip

s1 = gzip.compress('Hello, world'.encode())
print ("s1类型",type(s1))
print ("s1是 ",s1)

s2=str(s1,encoding='utf-8')

print ("s2类型",type(s2))
print ("s2是 ",s2)

s3=bytes(s2,encoding='utf8')

print("s3的类型",type(s3))
print ("s3是 ",s3)

输出的结果是:

s1类型 <class 'bytes'>
s1是  b'\x1f\x8b\x08\x00\x1d\xe1\x9e]\x02\xff\xf3H\xcd\xc9\xc9\xd7Q(\xcf/\xcaI\x01\x00\xc2\xa9\x9a\xe7\x0c\x00\x00\x00'
s2类型 <class 'str'>
s2是  b'\x1f\x8b\x08\x00\x1d\xe1\x9e]\x02\xff\xf3H\xcd\xc9\xc9\xd7Q(\xcf/\xcaI\x01\x00\xc2\xa9\x9a\xe7\x0c\x00\x00\x00'
s3的类型 <class 'bytes'>
s3是  b"b'\\x1f\\x8b\\x08\\x00\\x1d\\xe1\\x9e]\\x02\\xff\\xf3H\\xcd\\xc9\\xc9\\xd7Q(\\xcf/\\xcaI\\x01\\x00\\xc2\\xa9\\x9a\\xe7\\x0c\\x00\\x00\\x00'"

问题是:为什么s1与s3不一样了,怎么才能通过s2 ,把s3转成和s1一样的了,然后还原到 最初的hello world ?

s1 = gzip.compress('Hello, world'.encode())
这是压缩的编码
s3=bytes(s2,encoding='utf8')
这个没有压缩