根據文件前四個字節判斷文件類型(centos 7)


gcc 4.8.5 :centos

struct stat st;

stat 獲取文件信息

open    O_RDONLY

read(fd,buffer,st.st_size);

前四個字節獲取unsigned int len =

 ((unsigned char)buffer[0] << 24) | ((unsigned char)buffer[1] << 16) | ((unsigned char)buffer[2] << 8) | ((unsigned char)buffer[3] )

通過或來把四個字節轉為16進制連接起來(或:|   有1既是1)

疑問:文件的字節數(st.st_size  和 len 比較有什么意義嗎??)

          Maxlen = len - 262144 -4  ;  是啥意義?     2^18 == 262144 == 256 * 1024

od -N4 -t x1 test.txt|head -1|sed -e 's/0000000//g' -e 's/ //g'|tr -d '\n'

od -N4 -t x1 test.txt|head -1|sed -e 's/0000000//g' -e 's/ //g'

下面編碼和文件類型對比來自參考路徑,不確定准確性;

JPEG (jpg),文件頭:FFD8FF 
PNG (png),文件頭:89504E47 
GIF (gif),文件頭:47494638 
TIFF (tif),文件頭:49492A00 
Windows Bitmap (bmp),文件頭:424D 
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 
Postscript (eps.or.ps),文件頭:252150532D41646F6265 
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

 

常用文件的文件頭如下: 

 

1. MIDI (mid),文件頭:4D546864  

2.  JPEG (jpg),文件頭:FFD8FF   

3.  PNG (png),文件頭:89504E47   

4.  GIF (gif),文件頭:47494638   

5.  TIFF (tif),文件頭:49492A00   

6.  Windows Bitmap (bmp),文件頭:424D   

7.  CAD (dwg),文件頭:41433130   

8.  Adobe Photoshop (psd),文件頭:38425053   

9.  Rich Text Format (rtf),文件頭:7B5C727466   

10. XML (xml),文件頭:3C3F786D6C   

11. HTML (html),文件頭:68746D6C3E   

12. Email [thorough only] (eml),文件頭:44656C69766572792D646174653A   

13. Outlook Express (dbx),文件頭:CFAD12FEC5FD746F    

14. Outlook (pst),文件頭:2142444E   

15. MS Word/Excel (xls.or.doc),文件頭:D0CF11E0   

16. MS Access (mdb),文件頭:5374616E64617264204A   

17. WordPerfect (wpd),文件頭:FF575043   

18. Postscript (eps.or.ps),文件頭:252150532D41646F6265   

19. Adobe Acrobat (pdf),文件頭:255044462D312E   

20. Quicken (qdf),文件頭:AC9EBD8F   

21. Windows Password (pwl),文件頭:E3828596   

22. ZIP Archive (zip),文件頭:504B0304   

23. RAR Archive (rar),文件頭:52617221   

24. Wave (wav),文件頭:57415645   

25. AVI (avi),文件頭:52494646

26. Real Audio (ram),文件頭:2E7261FD   

27. Real Media (rm),文件頭:2E524D46   

28. Windows Media Audio(wma)(asf),文件頭:3026b2758e66cf

29. wrf, 文件頭:574f5446000600

29. MPEG (mpg),文件頭:000001BA   

30. MPEG (mpg),文件頭:000001B3   

31. Quicktime (mov),文件頭:6D6F6F76   

32. Windows Media (asf),文件頭:3026B2758E66CF11   

參考路徑:

   http://suiwnet.blog.51cto.com/2492370/1419491

http://www.oschina.net/code/snippet_128697_39191#57989

http://blog.csdn.net/gagapencil/article/details/40392363

http://www.oschina.net/question/1033955_2148033

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM