gpt4 book ai didi

linux - 为什么 zlib 中的压缩功能在 windows 和 linux 之间是不同的

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:53 25 4
gpt4 key购买 nike

使用相同的 zlib 版本 1.2.11 和相同的代码:

char * msg = "0000000000000000000000000000000000000000";
unsigned char buf[1024]={0};
unsigned long buf_len=1024;
FILE *f;
int ret = compress(buf,&buf_len,(const Bytef*)msg,strlen(msg));
printf("ret:%d,%.*s\n",ret,buf_len,buf);
f = fopen("output.txt","wb");
if(f)
{
fwrite(buf,buf_len,1,f);
fclose(f);
}

Windows 的输出是:78 9C 33 30 00 02 00 02 D5 00 F1

linux的输出是:00 00 00 00 00 02 00 02 D5 00 F1

为什么他们没有相同的输出?

最佳答案

两种情况都有问题。第一个至少是一个有效的 zlib 流,但出于某种原因,它编码了五个“0”数字而不是提供的 40 个数字。第二个显然也有与第一个相同的问题,加上它的前四个字节以某种方式归零,因此它甚至不是有效的 zlib 流。

当我运行代码时(在 printf 中的 buf_len 之前添加 (int),只是为了避免警告),我得到一个正确的 zlib 流,它对所有 40 个“0”数字进行编码。我在 Linux 和 Darwin (macOS) 上运行它都没有问题。

关于linux - 为什么 zlib 中的压缩功能在 windows 和 linux 之间是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com