所以我有这个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直到文件结尾?
答案 0 :(得分:0)
gzopen返回指向gzfile的指针。 inFileZ应该是指针改变第一行:gzFile *inFileZ = gzopen("data4.txt", "rb");
你可以阅读你的整个文件:
while(!gzeof(inFileZ){
//Your code
}
确保包含zlib.h