Итак, у меня есть этот TIFF со сжатием 32946, который является COMPRESSION_DEFLATE.
Я читаю это вручную и получил все шестнадцатеричные значения TIFF, используя hexdump.
Теперь у меня есть значение data3.txt, которое содержит все шестнадцатеричные значения из hexdump.
Вот это вставлено в документы:
Это мой 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 включен
Других решений пока нет …