C++ 解压缩TIFF数据将打印随机字符

C++ 解压缩TIFF数据将打印随机字符,c++,zlib,ifstream,tiff,inflate,C++,Zlib,Ifstream,Tiff,Inflate,我有这个TIFF,压缩32946,这是压缩 我正在手边读: ifstream istream; std::string line; TIFHEAD header; istream.open("pic.tif",ios::binary|ios::in); istream.read((char*)&header, sizeof(TIFHEAD)); istream.seekg(header.IFDOffset); WORD numEntries1; istream.read((char *

我有这个TIFF,压缩32946,这是压缩

我正在手边读:

ifstream istream;
std::string line;
TIFHEAD header;
istream.open("pic.tif",ios::binary|ios::in);
istream.read((char*)&header, sizeof(TIFHEAD));
istream.seekg(header.IFDOffset);

WORD numEntries1;
istream.read((char *)&numEntries1, sizeof(WORD));
cout<<numEntries1<<endl;

DWORD tagOffset;
DWORD stripByte;

for(int i=0; i<numEntries1; i++) {
    TIFTAG tag;
    istream.read((char *)&tag, sizeof(TIFTAG));
}
ifstream-istream;
std::字符串行;
头套;
istream.open(“pic.tif”,ios::binary | ios::in);
istream.read((char*)和header,sizeof(TIFHEAD));
istream.seekg(收割台IFDOffset);
单词numEntries1;
istream.read((char*)和numEntries1,sizeof(WORD));

据我所知,您正在解压缩二进制浮点值并将其视为ASCII,这会创建一些看起来像垃圾的东西。

这是有道理的,但我如何查看浮点值以确保正确获取它们呢?float*f=(float*)unzipBuffer;然后printf(“%f,”f[i])检查它看起来像是好数据。有关更健壮的解决方案,请参阅我的IEEE754函数
int main(int argc, char **argv) {
    gzFile inFileZ = gzopen("data3.txt", "rb");
    unsigned char unzipBuffer[4];
    uint8_t unzippedBytes;
    while (true) {
        unzippedBytes = gzread(inFileZ, unzipBuffer, 4);
        std::cout<<std::hex<<unzipBuffer<<std::endl;
        z_stream stream;
        stream.next_in = unzipBuffer;
        inflate(&stream, 1);
        std::cout<<stream.next_in<<std::endl;
    }
    gzclose(inFileZ);
}