マジックナンバー (フォーマット識別子)
フォーマット識別子としてのマジックナンバーとは、ファイルの種類を識別するのに使われるファイル本文中の(内容中の)特定の位置にある特定の数値のことである。ファイルの種類を識別する方法としてはファイルの拡張子や属性値(プロパティ)を使う場合もあるが、マジックナンバーとはそれらのことではなく、ファイルの本文中に表れる特定の数値のことである。ほとんどの場合、マジックナンバーはファイルの先頭に位置し、数バイト程度である。
また、ファイル以外にもデータ構造を持ったオブジェクト全般、例えば、マスターブートレコードでのファイルシステムの種類を表す識別子なども、マジックナンバーと呼ばれている。
歴史を辿るとマジックナンバーは、PDP-11のヘッダ部分に配置されている、データをスキップしてプログラムの開始位置にジャンプするインストラクションコードを意味していた。例えば、ファイルの冒頭の1ワード(PDP-11は16ビットワードマシン)がリトルエンディアンの8進数で0407 である場合、PDP-11の命令コードとしては相対アドレス指定の無条件分岐 0400 を意味し、8ワード先(オフセットビットの 07 は命令コードの位置を起点とするために、命令コード自体の1ワードを加算して8ワード先)にジャンプする命令となる。後にa.outフォーマットのマジックナンバーの一つO_MAGICとして認識されるようになった。
ファイルの3バイト目からの5バイトがマジックナンバーに相当し、「-lh0-」や「-lh4-」などのように中の3バイトがLZH形式の形式名称と一致する。
ジャーゴンファイルでは、「既存のファイル形式と重ならないように、新しい番号をどのように決めれば良いか」「簡単である。ランダムに決めれば良い」「まさしくマジック(手品)である」と取り上げられている。