Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 如何检测文件上使用的压缩类型?(如果未指定文件扩展名)_Binary_Compression - Fatal编程技术网

Binary 如何检测文件上使用的压缩类型?(如果未指定文件扩展名)

Binary 如何检测文件上使用的压缩类型?(如果未指定文件扩展名),binary,compression,Binary,Compression,如何检测文件上使用的压缩类型?(假设未指定.zip、.gz、.xz或任何其他扩展名) 该信息是否存储在该文件头的某个位置?作为手动检查文件头的替代方法,您可以使用诸如TrID之类的实用程序。链接指向跨平台命令行版本;对于Windows,也有一个GUI。如果您在Linux机器上,只需使用“file”命令即可 通过查看前几个字节,可以确定它可能是这些格式之一。然后,您应该使用该格式的关联实用程序的完整性检查,或者通过实际进行解压缩来测试它是否真的是其中之一 您可以在说明中找到标题格式: ,以0x

如何检测文件上使用的压缩类型?(假设未指定.zip、.gz、.xz或任何其他扩展名)


该信息是否存储在该文件头的某个位置?

作为手动检查文件头的替代方法,您可以使用诸如TrID之类的实用程序。链接指向跨平台命令行版本;对于Windows,也有一个GUI。

如果您在Linux机器上,只需使用“file”命令即可


通过查看前几个字节,可以确定它可能是这些格式之一。然后,您应该使用该格式的关联实用程序的完整性检查,或者通过实际进行解压缩来测试它是否真的是其中之一

您可以在说明中找到标题格式:

  • ,以0x50、0x4b、0x03、0x04开头(除非为空,否则最后两个为0x05、0x06或0x06、0x06)
  • ,以0x1f、0x8b、0x08开头
  • ,以0xfd、0x37、0x7a、0x58、0x5a、0x00开头
其他:

  • ,以两个字节(以位为单位)0AA1000 bbbccccc开始,其中ccccc的选择使得被视为int16乘以256的第一个字节加上被视为int16的第二个字节是31的倍数。e、 g:01111000(位)=120(int16),10011100(位)=156(int16),120*256+156=30876,是31的倍数
  • 压缩(.Z)从0x1f、0x9d开始
  • bzip2(.bz2)以0x42、0x5a、0x68开头

如果您在linux上,下面是您如何查看文件前几个字节的十六进制表示:
xxd文件
@MarkAdler没问题,谢谢您的回复,我很感激!$od-x t1文件名|head@gstein也许你的意思是
od-tx1
$ mv foo.zip dink
$ file dink
dink: gzip compressed data, from Unix, last modified: Sat Aug  6 08:08:57 2011,
max compression
$