gzip文件格式包含压缩文件的(未压缩/原始)大小,编码在压缩文件的最后4个字节中。"gzip -l"命令报告压缩和未压缩大小、压缩比率以及原始文件名。
在stackoverflow上查找时,提到了一些解码最后4个字节大小的方法。
大小的编码方式是什么?大端序(最高位字节先)、小端序(最低位字节先),以及值是有符号的还是无符号的?
这段代码片段似乎对我有效。
以下是需要翻译的内容:
在stackoverflow上查找时,提到了一些解码最后4个字节大小的方法。
大小的编码方式是什么?大端序(最高位字节先)、小端序(最低位字节先),以及值是有符号的还是无符号的?
这段代码片段似乎对我有效。
FILE* fh; //assume file handle opened
unsigned char szbuf[4];
struct stat statbuf;
fstat(fn,&statbuf);
unsigned long clen=statbuf.st_size;
fseek(fh,clen-4,SEEK_SET);
int count=fread(szbuf,1,4,fh);
unsigned long ulen = ((((((szbuf[4-1] << 8) | szbuf[3-1]) << 8) | szbuf[2-1]) << 8) | szbuf[1-1]);
以下是需要翻译的内容:
这里有几篇相关文章,似乎都在暗示小端序和无符号长整型(0..4GB-1)。