表示不同文件类型的魔术数字

这里所说的表示不同文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别一个文件的文件类型所要花费的时间。

比如,一个JPEG文件,它开头的一些字节可能是类似这样的”ffd8 ffe0 0010 4a46 4946 0001 0101 0047 ……JFIF…..G“,这里”ffd8“就表示了这个文件是一个JPEG类型的文件,”ffe0“表示这是JFIF类型结构。

以下例出的是一些我们常见的文件类型,以及它用于判断这种文件的类型的几个开始字节及所对尖的ASCII数字:

图片文件

文件类型扩展名16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
Bitmap format.bmp42 4dBM
FITS format.fits53 49 4d 50 4c 45SIMPLE
GIF format.gif47 49 46 38GIF8
Graphics Kernel System.gks47 4b 53 4dGKSM
IRIS rgb format.rgb01 da..
ITC (CMU WM) format.itcf1 00 40 bb….
JPEG File Interchange Format.jpgff d8 ff e0….
NIFF (Navy TIFF).nif49 49 4e 31IIN1
PM format.pm56 49 45 57VIEW
PNG format.png89 50 4e 47.PNG
Postscript format.[e]ps25 21%!
Sun Rasterfile.ras59 a6 6a 95Y.j.
Targa format.tgaxx xx xx
TIFF format (Motorola – big endian).tif4d 4d 00 2aMM.*
TIFF format (Intel – little endian).tif49 49 2a 00II*.
X11 Bitmap format.xbmxx xx 
XCF Gimp file structure.xcf67 69 6d 70 20 78 63 66 20 76gimp xcf
Xfig format.fig23 46 49 47#FIG
XPM format.xpm2f 2a 20 58 50 4d 20 2a 2f/* XPM */

压缩文件

文件类型扩展名16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
Bzip.bz42 5aBZ
Compress.Z1f 9d..
gzip format.gz1f 8b..
pkzip format.zip50 4b 03 04PK..

存档文件

文件类型扩展名16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
TAR (pre-POSIX).tarxx xx(a filename)
TAR (POSIX).tar75 73 74 61 72ustar (offset by 257 bytes)

可执行文件

文件类型扩展名16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
MS-DOS, OS/2 or MS Windows 4d 5aMZ
Unix elf 7f 45 4c 46.ELF

其它文件

文件类型扩展名16进制数字
xx这里表示变量
Ascii数字
. = 不是Ascii字符
pgp public ring 99 00..
pgp security ring 95 01..
pgp security ring 95 00..
pgp encrypted data a6 00¦.

本文转自冯立彬的博客,原文地址:http://www.fenglibin.com/file_magic_numbers.html

    原文作者:魔术师发牌问题
    原文地址: https://blog.csdn.net/fenglibing/article/details/7733496
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞