Python zlib compression & decompression & decompression



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

b'xxdaxbbxd4xe2xbbx88xc5Cxe9lxe7xb6xcdx9dmx9ax8cjx0b"x19xf9x97xb0H%]6yxc0&x95xf0x837x9b1xc91xc4x92x91y!xe3x92xc4xb2xc6UI)yx8cIxb9x89xb9xfeAxeexbax86x06x06x06xc6x06Fx86xa6Iex05xe9^x06xe6Nx11x06xc6I)%YF@1]x03s]#xc3xa4xe4|xa0xeexa4xe4xccnxadxd0 ?xabxd00gO+x03C+xc7x10+xd7xa80x13xaf /xe3pxf7px93pwx8b0Oxe3xf0p3gx13KSexcfxa4xdcx82x1cxd7P}C}#x03}CS#x8bxa4xccxe2nixdfxccxbcxccxe2x92xa2Jx85xfc4x05x8fxd4xc4x9cx92x0cx1dx05xc7Rxa0HfbRqnSRIzxa6x85x89x81xa9xb1xa5x81x81Yr^bxeex92xe4xb4xbcx924'x1fWOxd7xa0xa4xb4xbc4xa7x9cxd4xccxd4xa2xe4xf4xbcx92,_xc7x08O_Ox1fOGxbfxa4xf4xbc,xdfxc4x8axccxdcxccx9cxccxc4xbcxe4xb2xd4xa2TC=c=x83xe4x94xfc$xa0/x0cx80xbexb0xd454x8epxe8Kxf7xf1xxb9Qxfcxc2x93x86x8dxc5x99xba7xb4x98xe4xe7dxder2xd4xd457xd8xd2X3ax8axa8x91xb4e_xe9x8ex9aixfaj=Vx17x9c"xcaRxb8Umxf2x1dNxdfx96x93xzsxf3xa9xbbx00x1c[zx03xxdaxbbxd4xe2xbbx88xc5Cxe9lxe7xb6xcdx9dmx9ax8cjx0b"x19xf9x97xb0H%]6yxc0&x95xf0x837x9b1xc91xc4x92x91y!xe3x92xc4xb2xc6UI)yx8cIxb9x89xb9xfeAxeexbax86x06x06x06xc6x06Fx86xa6Iex05xe9^x06xe6Nx11x06xc6I)%YF@1]x03s]#xc3xa4xe4|xa0xeexa4xe4xccnxadxd0 ?xabxd00gO+x03C+xc7x10+xd7xa80x13xaf /xe3pxf7px93pwx8b0Oxe3xf0p3gx13KSexcfxa4xdcx82x1cxd7P}C}#x03}CS#x8bxa4xccxe2nixdfxccxbcxccxe2x92xa2Jx85xfc4x05x8fxd4xc4x9cx92x0cx1dx05xc7Rxa0HfbRqnSRIzxa6x85x89x81xa9xb1xa5x81x81Yr^bxeex92xe4xb4xbcx924'x1fWOxd7xa0xa4xb4xbc4xa7x9cxd4xccxd4xa2xe4xf4xbcx92,_xc7x08O_Ox1fOGxbfxa4xf4xbc,xdfxc4x8axccxdcxccx9cxccxc4xbcxe4xb2xd4xa2TC=c=x83xe4x94xfc$xa0/x0cx80xbexb0xd454x8epxe8Kxf7xf1xxb9Qxfcxc2x93x86x8dxc5x99xba7xb4x98xe4xe7dxder2xd4xd457xd8xd2X3ax8axa8x91xb4e_xe9x8ex9aixfaj=Vx17x9c"xcaRxb8Umxf2x1dNxdfx96x93xzsxf3xa9xbbx00x1c[zx03'

现在我想用zlib.compress(output)反转解压缩以获得原始字符串。但是输出却不一样:

b'xx9cxbbxd4xe2xbbx88xc5Cxe9lxe7xb6xcdx9dmx9ax8cjx0b"x19xf9x97xb0H%]6yxc0&x95xf0x837x9b1xc91xc4x92x91y!xe3x92xc4xb2xc6UI)yx8cIxb9x89xb9xfeAxeexbax86x06x06x06xc6x06Fx86xa6Iex05xe9^x06xe6Nx11x06xc6I)%YF@1]x03s]#xc3xa4xe4|xa0xeexa4xe4xccnxadxd0 ?xabxd00gO+x03C+xc7x10+xd7xa80x13xaf /xe3pxf7px93pwx8b0Oxe3xf0p3gx13KSexcfxa4xdcx82x1cxd7P}C}#x03}CS#x8bxa4xccxe2nixdfxccxbcxccxe2x92xa2Jx85xfc4x05x8fxd4xc4x9cx92x0cx1dx05xc7Rxa0HfbRqnSRIzxa6x85x89x81xa9xb1xa5x81x81Yr^bxeex92xe4xb4xbcx924'x1fWOxd7xa0xa4xb4xbc4xa7x9cxd4xccxd4xa2xe4xf4xbcx92,_xc7x08O_Ox1fOGxbfxa4xf4xbc,xdfxc4x8axccxdcxccx9cxccxc4xbcxe4xb2xd4xa2TC=c=x83xe4x94xfc$xa0/x0cx80xbexb0xd454x8epxe8Kxf7xf1xxb9Qxfcxc2x93x86x8dxc5x99xba7xb4x98xe4xe7dxder2xd4xd457xd8xd2X3ax8axa8x91xb4e_xe9x8ex9aixfaj=Vx17x9c"xcaRxb8Umxf2x1dNxdfx96x93xzsxf3xa9xbbx00x1c[zx03'
下面是我的代码:
zlibdata = base45.b45decode(data1)
cbordata = zlib.decompress(zlibdata)
print(zlibdata)
print("-----------------")
compressedData = zlib.compress(cbordata)
print(compressedData)

我做错了什么?

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

一个无损压缩器保证压缩后再解压缩会给你完全相同的结果。然而,没有保证,也没有期望解压后再压缩会得到相同的结果。

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

最新更新