文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。
定义
文件头是位于文件开头的一段承担一定任务的数据。一般都在开头的部分。
解释
别看这个文件头和C语言中的头文件读起来很像,但这两个东西其实根本没有一点关系:头文件是一种包含功能函数,数据接口声明的载体文件;而文件头则是直接位于文件中的一段数据,是文件的一部分
大家应该知道,微机中的文件有很多种类型,而相同类型的文件一般还会多多少少有一些不同的地方.文件的类型有EXE,COM,BMP,GIF,WMV,APE,RMVB,FLV,SWF,TXT,CPP,ASM等等,当然有的文件根本就没有文件头,比如说TXT,不信的话可以用UltraEdit打开一个文本文件,除了这个文本文件本身的字符,你不会看到任何其他的数据.不同类型的文件,只要拓展名不同,操作系统就可以识别这个文件,并用不同的程序来打开这个文件了,比如JPEG文件,它的拓展名一般式jpg,当双击这种类型的文件时,操作系统会自动选择相应的程序来打开这个文件,比如用ACDSee打开.但值得注意的是,相同类型的文件是有不同的地方的,这回拿BMP来举例,大家可以想象一下不同的图片之间最大的不同是什么,有人可能会说是内容,我可以告诉你,你想歪了!不知道大家有没有在看到各种不同大小的图像的时候想过图像浏览软件是怎样识别图像的大小的?这其实就是文件头的功劳!下面给大家演示一下:
先用Windows自带的画图软件创建一个64*64像素的16位纯白BMP图像,保存为1.bmp
然后将图像的大小改为128*64,另存为2.bmp
在ACDSee的浏览界面看到如图的两个东西
再用UltraEdit同时打开这两个文件,看看这两个文件的前32个字节:
1.bmp:
00000000h: 42 4D 76 08 00 00 00 00 00 00 76 00 00 00 28 00 ; BMv.......v...(.
00000010h: 00 00 40 00 00 00 40 00 00 00 01 00 04 00 00 00 ; ..@...@.........
2.bmp:
00000000h: 42 4D 76 10 00 00 00 00 00 00 76 00 00 00 28 00 ; BMv.......v...(.
00000010h: 00 00 80 00 00 00 40 00 00 00 01 00 04 00 00 00 ; ..?..@.........
由于这是十六进制的数据,所以要将原来图像的宽度和高度换成十六进制,以便找到我们想要看到的数据
十进制的128等于十六进制的80,十进制的64等于十六进制的40.这样在第二行好像有我们找的数据
这个过程只是为了让大家了解一下文件头,其实这些数据都是有标准的,百度百科的BMP词条就有BMP文件的文件结构
LONG biHeight; // 位图的高度,以像素为单位(22-25字节)
18-21字节的数据是80 00 00 00,这是个双字,其实就是80,内存中的数据就是这么放的,这个不是问题
写这么多大家应该对文件头有一点了解了吧?
文件头就是为了描述一个文件的一些重要的属性,它告诉了打开并处理该文件的程序这些属性,比如上面说的BMP的文件头将长宽像素值告诉了ACDSee,ACDSee会根据文件头中的数据以及图像数据的正文把图像显示出来
常见文件的文件头
jpg: 255,216
gif: 71,73
bmp: 66,77
png: 137,80
doc: 208,207
docx: 80,75
xls: 208,207
xlsx: 80,75
js: 239,187
swf: 67,87
mp3: 73,68
wma: 48,38
mid: 77,84
rar: 82,97
zip: 80,75
xml: 60,63
用文件头判断。直接读取文件的前几个字节。
常用文件的文件头如下(16进制):
JPEG (jpg),文件头:FFD8FFE0或FFD8FFE1或FFD8FFE8
GIF (gif),文件头:47494638PNG (png),文件头:89504E47
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424DC001
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864