魔术数字(magic number)

在程序设计中,魔术数字可能指:

  • 缺乏解释或命名的独特数值。常常在程序中出现多次,并且可以(从规范上而言也应当)被有名字的常量取代。
  • 用于识别一个文件格式或协议类型的一段常量或字符串。
  • 不易与其它值混淆的值,例如 UUID

文件中的魔数

文件类型 位置 魔数 含义
GIF 开头 6 字节 47 49 46 38 37 61 GIF87a
JPEG 开头 2 字节 FF D8
PNG 开头 8 字节 89 50 4E 47 0D 0A 1A 0A ?PNG\r\n?\n
Unix 或 Linux 脚本以 “Shebang” 开头 开头 2 字节 23 21 #!
ELF 开头 4 字节 7F 45 4C 46 ?ELF
PDF 开头 4 字节 25 50 44 46 %PDF
7z 开头 6 字节 37 7A BC AF 27 1C 7z????
ZIP 开头 2 字节 50 4B PK(作者名字缩写)
BZ2 开头 3 字节 42 5A 68 BZh
tar 第 256~261 字节 00 75 73 74 61 72 ?ustar
硬盘第一个扇区最后 2 字节 硬盘第一个扇区最后 2 字节 55 AA

参考

编程中的「魔数」(magic number)是什么意思?平时我们能接触到哪些魔数?

Magic number (programming)

常见文件文件头