Intel HEX

Intel HEXはバイナリ情報をASCIIテキスト形式で記載したファイル形式である。マイクロコントローラやEPROMなどのプログラム可能なデバイスのプログラム書き込みのために広く用いられている。典型的な利用用途としてはコンパイラやアセンブラがプログラムのC言語やアセンブリ言語などのソースコードを機械語に変換し、HEXファイルとして出力する。HEXファイルはROMにマシン語のコードを「焼く」ために書き込み機によって読み込まれたり、対象のシステムで読み込んだり実行したりするために転送されたりする。
形式.
Intel HEXは改行コードによって区切られた複数行のASCIIテキストからなる。各行は複数の2進数値をエンコードする16進数の文字を含む。2進数の値は行の位置や形式、長さによってデータ、メモリアドレスなどに相当する。各行は"レコード"と呼ばれる。
レコード構造.
レコード(テキストの行)は左から順に並んだ6つのフィールド（部分）を有する:
色凡例.
視覚的な補助として、Intel HEXレコードのフィールドはこの記事において以下のように色分けされる。
チェックサム計算.
チェックサムの値はレコード内のチェックサムの前のデコードされたバイト値全ての合計の最下位ビット(LSB)の2の補数である。
例えば、のようなレコードの場合、デコードされたバイト値の合計は + + + + + + = codice_1である。codice_1の2の補数はであり、これがレコードの末尾に表れているチェックサムである。
レコードの妥当性はそのレコードのチェックサムを計算し、計算されたチェックサムがレコードに表れているチェックサムと一致するかを確認することで検証される。
行末記号.
Intel HEXレコードは1行に1つのレコードが表記されるように1つまたは複数の改行コードによって区切られる。このことはレコードを視覚的に区切ることによって可読性を向上し、レコード間のパディングを提供することで機械による構文解析の効率を高めることを可能にしている。
HEXレコードを作成するプログラムは典型的にはそれらの動作するオペレーティングシステムの慣例に従うような改行コードを用いる。例えばLinux上のプログラムはLF（ラインフィード，16進数でcodice_3）を単独で行末に用い、Windows上のプログラムはCR（キャリッジリターン，16進数でcodice_4）とそれに続くLFを用いる。
レコードタイプ.
Intel HEXは以下の6つの標準的なレコードタイプを持つ。
名称のあるフォーマット.
特定のレコードタイプのサブセットを用いるHEXファイルのフォーマットを示すために特別な名称が用いられることがある。以下がその例である。
ファイル例.
以下の例は4つのデータレコードとそれに続くEnd Of Fileレコードを含むファイルを示す。