gpt4 book ai didi

c++ - 使用 gzread 读取直到 EOF 并膨胀浮点值

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

所以我有这个 TIFF,压缩 32946,它是 COMPRESSION_DEFLATE。

我正在手读它并使用 hexdump 获得了所有 TIFF 十六进制值。

我现在有一个值 data3.txt,其中包含来自 hexdump 的所有十六进制值。 Here它被粘贴到文档中:

到目前为止,这是我的 zlib 代码。

int main(int argc, char **argv) {
gzFile inFileZ = gzopen("data4.txt", "rb");
unsigned char unzipBuffer[4];
gzread(inFileZ, unzipBuffer, 4);
std::cout<<std::hex<<unzipBuffer<<std::endl;
z_stream stream;
stream.next_in = unzipBuffer;
inflate(&stream, 1);
float *f = (float *) unzipBuffer;
printf("%f\n", f);
gzread(inFileZ, unzipBuffer, 4);
std::cout<<std::hex<<unzipBuffer<<std::endl;
stream.next_in = unzipBuffer;
inflate(&stream, 1);
f = (float *) unzipBuffer;
printf("%f\n", f);
gzclose(inFileZ);
}

我总是先得到正确的十六进制值,然后是 0.0000。我做错了什么?

此外,如果没有像我上面那样复制粘贴代码,我如何使用 gzread 连续读取文件直到文件末尾?

最佳答案

gzopen 返回一个指向 gzfile 的指针。 inFileZ 应该是一个指针,将第一行更改为:gzFile *inFileZ = gzopen("data4.txt", "rb");您可以阅读整个文件:

while(!gzeof(inFileZ){   
//Your code
}

确保包含 zlib.h

关于c++ - 使用 gzread 读取直到 EOF 并膨胀浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44891754/

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