bianbian

用Magic Number判断文件类型

2013.08.16

Magic Number是指文件头部的几个字节,通常用十六进制表示,可用来判断文件类型。比如Java class文件的CAFEBABE,linux shell script的“shebang”(#!, 23 21)。

UTF-16,UTF-32编码文件的BOM,也可以作为Magic Number,用来判断文件编码。UTF-8编码的文件不一定包含BOM,不能用这种办法判断。

各种Unicode编码的BOM如下表:

Bytes Encoding Form
00 00 FE FF UTF-32, big-endian
FF FE 00 00 UTF-32, little-endian
FE FF UTF-16, big-endian
FF FE UTF-16, little-endian
EF BB BF UTF-8

在程序中,只要读取文件头部几个字节,转换成十六进制,然后跟已知的Magic Number比较,就可以知道文件类型了。

顺便贴个Java字节转十六进制的代码:

参考:

-EOF-
comments powered by Disqus