HEXをBINに変換
Intel HEXテキストファイルを生バイナリバイトストリームに変換することで、ASCIIフォーマットのラッパーを取り除き、マイクロコントローラのフラッシュメモリへの直接プログラミング用のコードを準備します。
フォーマットの比較と技術仕様
| 仕様 | HEX | BIN |
|---|---|---|
| MIMEタイプ | text/ | application/ |
| タイプ | 16進メモリレコード | 未加工のバイナリバイトストリーム |
| 圧縮 | なし | なし |
| 標準仕様 | Intel HEX-32 オブジェクト形式 | 生バイナリバイトストリーム仕様書 |
| マジックバイトヘッダー | :[0-9A-Fa-f]{8} (Intel HEX colon record format) | Raw arbitrary binary bytes |
フォーマットの概要と用途
Intel HEXレコードには、アドレス、バイト数、レコードタイプ、チェックサムが含まれます。raw binaryに変換するとレコードの枠組みが取り除かれ、データのバイト列が出力されます。アドレスの空きと選択した基準アドレスによって、出力イメージの配置が変わります。プログラマーが明示的なメモリアドレスを必要とする場合はIntel HEXを使用してください。
技術仕様とコーデックの詳細
Intel HEXはtext/plainのMIMEタイプを使用し、データおよびメモリアドレスのすべてのバイトを、開始コード、長さを表す指標、チェックサムとともに2つのASCII文字としてエンコードします。対照的に、生バイナリはapplication/octet-streamを使用し、実際のデータバイトの未フォーマットのシーケンスを表します。どちらの形式も圧縮を使用しないため、厳密にロスレスです。Intel HEXファイルにはマジックバイト署名はありませんが、常にASCIIのコロン文字で始まります。生バイナリファイルにもマジックヘッダーやフッターはなく、対象のメモリマップ用に意図された生のデータバイトのみが含まれています。変換アルゴリズムは各Intel HEX行を読み取り、ASCIIの16進数ペアを解析し、レコードのチェックサムを検証し、結果のバイナリバイトを指定されたメモリオフセットに直接書き込みます。
OSとブラウザの互換性
Windows、macOS、Linuxなどのオペレーティングシステムでは、objcopyなどのコマンドラインユーティリティやカスタムスクリプトを使用して、この変換を簡単に処理できます。最新のWebブラウザは、JavaScriptとFileReader APIを使用してローカルで変換を実行できるため、開発者はWebベースの開発環境内で直接ファイルを変換できます。モバイルオペレーティングシステムにはネイティブのコマンドラインフラッシュツールがありませんが、iOSやAndroid上で動作するWebアプリは、リモートの現場アップデート用に必要な場合、変換を処理できます。
役立つ情報
Intel HEXファイルを生バイナリに変換する前に、メモリのオフセットアドレスを必ず確認してください。メモリセグメントが分散していると、結果のバイナリ出力にゼロで埋められたバイトの隙間が生じ、ファイルサイズが膨らむ可能性があります。
よくある質問
品質を落とさずにIntel HEXを生バイナリに変換するにはどうすればよいですか?
両方の形式が圧縮なしで正確な機械語命令を格納しているため、これは厳密にロスレスな変換です。変換によってASCIIテキストのラッパーとチェックサムが取り除かれ、基礎となるバイナリコードが完全にそのまま残ります。
Intel HEXと生バイナリの違いは何ですか?
Intel HEXは、人間による読みやすさと安全な転送のために、アドレスマーカー、バイト数、エラーチェックコードを含むASCIIテキスト形式です。生バイナリは、プロセッサによる直接実行の準備が整った生の機械語バイトのみを含むメモリイメージです。