定義
檔案頭是位於檔案開頭的一段承擔一定任務的數據。一般都在開頭的部分。
解釋
別看這個檔案頭和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 biWidth; // 點陣圖的寬度,以像素為單位(18-21位元組)
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