0

我有一个 base45 解码的字符串,我用 成功解压output = zlib.decompress(string),其中string是:

b'x\xda\xbb\xd4\xe2\xbb\x88\xc5C\xe9l\xe7\xb6\xcd\x9dm\x9a\x8cj\x0b"\x19\xf9\x97\xb0H%]6y\xc0&\x95\xf0\x837\x9b1\xc91\xc4\x92\x91y!\xe3\x92\xc4\xb2\xc6UI)y\x8cI\xb9\x89\xb9\xfeA\xee\xba\x86\x06\x06\x06\xc6\x06F\x86\xa6Ie\x05\xe9^\x06\xe6N\x11\x06\xc6I)%YF@1]\x03s]#\xc3\xa4\xe4|\xa0\xee\xa4\xe4\xcc\n\xad\xd0 ?\xab\xd00gO+\x03C+\xc7\x10+\xd7\xa80\x13\xaf /\xe3p\xf7p\x93pw\x8b0O\xe3\xf0p3g\x13KSe\xcf\xa4\xdc\x82\x1c\xd7P}C}#\x03}CS#\x8b\xa4\xcc\xe2\ni\xdf\xcc\xbc\xcc\xe2\x92\xa2J\x85\xfc4\x05\x8f\xd4\xc4\x9c\x92\x0c\x1d\x05\xc7R\xa0HfbRq\nSRIz\xa6\x85\x89\x81\xa9\xb1\xa5\x81\x81Yr^b\xee\x92\xe4\xb4\xbc\x924\'\x1fWO\xd7\xa0\xa4\xb4\xbc4\xa7\x9c\xd4\xcc\xd4\xa2\xe4\xf4\xbc\x92,_\xc7\x08O_O\x1fOG\xbf\xa4\xf4\xbc,\xdf\xc4\x8a\xcc\xdc\xcc\x9c\xcc\xc4\xbc\xe4\xb2\xd4\xa2TC=c=\x83\xe4\x94\xfc$\xa0/\x0c\x80\xbe\xb0\xd454\x8ep\xe8K\xf7\xf1x\xb9Q\xfc\xc2\x93\x86\x8d\xc5\x99\xba7\xb4\x98\xe4\xe7d\xder2\xd4\xd457\xd8\xd2X3a\x8a\xa8\x91\xb4e_\xe9\x8e\x9ai\xfaj=V\x17\x9c"\xcaR\xb8Um\xf2\x1dN\xdf\x96\x93xzs\xf3\xa9\xbb\x00\x1c[z\x03x\xda\xbb\xd4\xe2\xbb\x88\xc5C\xe9l\xe7\xb6\xcd\x9dm\x9a\x8cj\x0b"\x19\xf9\x97\xb0H%]6y\xc0&\x95\xf0\x837\x9b1\xc91\xc4\x92\x91y!\xe3\x92\xc4\xb2\xc6UI)y\x8cI\xb9\x89\xb9\xfeA\xee\xba\x86\x06\x06\x06\xc6\x06F\x86\xa6Ie\x05\xe9^\x06\xe6N\x11\x06\xc6I)%YF@1]\x03s]#\xc3\xa4\xe4|\xa0\xee\xa4\xe4\xcc\n\xad\xd0 ?\xab\xd00gO+\x03C+\xc7\x10+\xd7\xa80\x13\xaf /\xe3p\xf7p\x93pw\x8b0O\xe3\xf0p3g\x13KSe\xcf\xa4\xdc\x82\x1c\xd7P}C}#\x03}CS#\x8b\xa4\xcc\xe2\ni\xdf\xcc\xbc\xcc\xe2\x92\xa2J\x85\xfc4\x05\x8f\xd4\xc4\x9c\x92\x0c\x1d\x05\xc7R\xa0HfbRq\nSRIz\xa6\x85\x89\x81\xa9\xb1\xa5\x81\x81Yr^b\xee\x92\xe4\xb4\xbc\x924\'\x1fWO\xd7\xa0\xa4\xb4\xbc4\xa7\x9c\xd4\xcc\xd4\xa2\xe4\xf4\xbc\x92,_\xc7\x08O_O\x1fOG\xbf\xa4\xf4\xbc,\xdf\xc4\x8a\xcc\xdc\xcc\x9c\xcc\xc4\xbc\xe4\xb2\xd4\xa2TC=c=\x83\xe4\x94\xfc$\xa0/\x0c\x80\xbe\xb0\xd454\x8ep\xe8K\xf7\xf1x\xb9Q\xfc\xc2\x93\x86\x8d\xc5\x99\xba7\xb4\x98\xe4\xe7d\xder2\xd4\xd457\xd8\xd2X3a\x8a\xa8\x91\xb4e_\xe9\x8e\x9ai\xfaj=V\x17\x9c"\xcaR\xb8Um\xf2\x1dN\xdf\x96\x93xzs\xf3\xa9\xbb\x00\x1c[z\x03'

现在我想用反向解压zlib.compress(output)来取回原始字符串。但是输出不一样:

b'x\x9c\xbb\xd4\xe2\xbb\x88\xc5C\xe9l\xe7\xb6\xcd\x9dm\x9a\x8cj\x0b"\x19\xf9\x97\xb0H%]6y\xc0&\x95\xf0\x837\x9b1\xc91\xc4\x92\x91y!\xe3\x92\xc4\xb2\xc6UI)y\x8cI\xb9\x89\xb9\xfeA\xee\xba\x86\x06\x06\x06\xc6\x06F\x86\xa6Ie\x05\xe9^\x06\xe6N\x11\x06\xc6I)%YF@1]\x03s]#\xc3\xa4\xe4|\xa0\xee\xa4\xe4\xcc\n\xad\xd0 ?\xab\xd00gO+\x03C+\xc7\x10+\xd7\xa80\x13\xaf /\xe3p\xf7p\x93pw\x8b0O\xe3\xf0p3g\x13KSe\xcf\xa4\xdc\x82\x1c\xd7P}C}#\x03}CS#\x8b\xa4\xcc\xe2\ni\xdf\xcc\xbc\xcc\xe2\x92\xa2J\x85\xfc4\x05\x8f\xd4\xc4\x9c\x92\x0c\x1d\x05\xc7R\xa0HfbRq\nSRIz\xa6\x85\x89\x81\xa9\xb1\xa5\x81\x81Yr^b\xee\x92\xe4\xb4\xbc\x924\'\x1fWO\xd7\xa0\xa4\xb4\xbc4\xa7\x9c\xd4\xcc\xd4\xa2\xe4\xf4\xbc\x92,_\xc7\x08O_O\x1fOG\xbf\xa4\xf4\xbc,\xdf\xc4\x8a\xcc\xdc\xcc\x9c\xcc\xc4\xbc\xe4\xb2\xd4\xa2TC=c=\x83\xe4\x94\xfc$\xa0/\x0c\x80\xbe\xb0\xd454\x8ep\xe8K\xf7\xf1x\xb9Q\xfc\xc2\x93\x86\x8d\xc5\x99\xba7\xb4\x98\xe4\xe7d\xder2\xd4\xd457\xd8\xd2X3a\x8a\xa8\x91\xb4e_\xe9\x8e\x9ai\xfaj=V\x17\x9c"\xcaR\xb8Um\xf2\x1dN\xdf\x96\x93xzs\xf3\xa9\xbb\x00\x1c[z\x03'

这是我的代码:

zlibdata = base45.b45decode(data1)
cbordata = zlib.decompress(zlibdata)
print(zlibdata)
print("-----------------")
compressedData = zlib.compress(cbordata)
print(compressedData)

我究竟做错了什么?

4

1 回答 1

4

如果您可以解压缩compressedData并完全cbordata恢复,那么您没有做错任何事情。唯一错误的是您期望或希望获得相同的压缩数据。

无损压缩器保证压缩后解压给你带来完全相同的东西。但是,不能保证也不能期望解压缩后压缩会返回相同的结果。

相同的压缩代码具有不同的压缩级别或不同的设置将给出不同的输出。具有相同设置的不同版本的压缩代码可以提供不同的输出。不同的压缩库会给出不同的输出。

于 2021-08-08T17:16:22.783 回答