所以我有这个TIFF,压缩32946,这是COMPRESSION_DEFLATE。
我正在手工阅读:
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));
}
并找到所有TIFF十六进制值。
我现在有一个值data3.txt,它包含来自hexdump的所有十六进制值。 Here它被粘贴到文档中:
这是我的zlib代码到目前为止,对于大多数数据,它打印正确(由于某种原因,中途,它开始重复打印000和换行符,然后转换为非ASCII字符)。
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);
}
并且打印出的第二件事部分是值和部分非ASCII字符。这是为什么?
如果不清楚,我的最终目标是手动读取TIFF,每个像素都有浮点数。我想得到所有那些花车。
编辑:此外,即使data3.txt只包含12个字符,也存在无限循环。为什么呢?
答案 0 :(得分:1)
据我所知,你可以解压缩二进制浮点值并将它们视为ASCII,这会产生看似垃圾的东西。