C++ 解压缩TIFF数据将打印随机字符
我有这个TIFF,压缩32946,这是压缩 我正在手边读: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 *
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);
}