エンディアンを入れ替え
入力(16進)
スワップ後の出力
技術的な詳細
エンディアン入れ替えツールの仕組み
このツールでできること
Swap Endianness ツールは、設定可能なワードサイズ(2、4、または 8 バイト)内で、16進入力のバイト順を反転します。これは、16進で格納された固定幅整数のリトルエンディアン表現とビッグエンディアン表現を相互変換するためのもので、バイナリファイル形式、ネットワークプロトコル、またはバイト順が一致しない低レベルのデバッグツールを扱う際によく必要になります。
開発者によくある利用シーン
リバースエンジニアは、x86 や ARM(リトルエンディアン)と PowerPC や MIPS(歴史的にビッグエンディアン)からのヘxdumpを正規化し、アーキテクチャ間で値を比較できるようにします。ネットワークエンジニアは、ホストバイトオーダーの整数をネットワークバイトオーダー(常にビッグエンディアン)に変換してから、パケットキャプチャに埋め込みます。組み込み開発者は、フラッシュに保存された構造体を、解析ツールが期待する形式に合わせてバイトを並べ替えてデバッグします。
データ形式、型、またはバリエーション
入力は `0x` プレフィックスの有無を問わず、任意の空白を含む16進を受け付けます。出力は見やすさのため、スペース区切りの小文字16進バイトとして表示されます。ワードサイズ 2、4、8 バイトは、それぞれ 16、32、64 ビット整数に対応します。複数ワードは独立して入れ替えられます。4 バイトワードサイズでは、12345678 9ABCDEF0 は 78 56 34 12、続いて F0 DE BC 9A になります。
よくある落とし穴とエッジケース
入力はバイト数が整数(16進桁数が偶数)であり、かつワード数が整数(バイト単位の設定ワードサイズで割り切れる)である必要があります。サイズが一致しない場合、黙って切り捨てるのではなくエラーを返します。ネットワークバイトオーダーは常にビッグエンディアンで、x86 / ARM はリトルエンディアンです。ワイヤ形式の整数を読み書きする際はバイトを入れ替えてください。
コードではなくこのツールを使うべき場面
バイナリダンプを読んだりデバッグしたりする際の一回限りの変換には、ブラウザツールを使ってください。コードでは、JavaScript の `DataView`(`littleEndian` フラグを明示)、Python の `int.from_bytes` の `byteorder='little'|'big'`、Go の `binary.LittleEndian.Uint32`、C の `ntohl` / `htonl` を優先してください。意図が明確で、16進の往復変換も避けられます。