バイト順入れ替え計算機
0x12345678の4バイトを反転すると0x78563412になります。ネットワーク順とリトルエンディアンのメモリをつなぐ変換です。8・16・32・64ビットから幅を選ぶと、反転前後の値を16進、10進、バイト列で確認できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 0x12345678
- 幅
- 32
- バイト数
- 4
- 変換前の16進数
- 0x12345678
- 変換後の16進数
- 0x78563412
- 変換前の10進数
- 305419896
ネットワークスタック、ファイル形式、組み込みファームウェアは、整数の最上位バイトが先頭か末尾かでしばしば食い違います。
8・16・32・64ビットでのバイト順入れ替えが行うこと
符号なしの複数バイト整数は、各バイトの重みがエンディアンに依存する列です。通常の位取りで書くと 0x12345678 は最上位バイトが 0x12、最下位バイトが 0x78 であることを意味します。ビッグエンディアン格納はその順のまま並べ、リトルエンディアンは逆にしてメモリが 78 56 34 12 になります。
バイト順の入れ替えは、固定幅の容器の中でまさにその逆転を行うことです。0x12345678 の 32 ビット入れ替えは 0x78563412、0x1234 の 16 ビット入れ替えは 0x3412、8 ビット値は 1 バイトしかなくひっくり返す順がないため変わりません。
64 ビットの入れ替えは同じ歩きを 8 バイトに対して行い、だから 0x0123456789ABCDEF は 0xEFCDAB8967452301 になります。ハードウェアはこの命令を bswap と呼び、ホスト順がリトルエンディアンのとき htons、htonl、ntohs、ntohl といった POSIX ネットワーク補助も同じ逆転です。
本計算機はプラットフォームを推測せず、元エンディアンの旗も不要です。人が書く整数(または 0x の hex 文字列)と幅を渡せば、その幅でバイトを逆にした整数が結果になります。入れ替えを二度適用すると元の値に戻るため、ホスト整数をネットワーク順へ往復させるテストに安全です。
バイト順の入れ替えが役立つ場面
プロトコルのリバースエンジニアリング、パケット組み立て、CTF のバイナリ課題では、Wireshark の hex ダンプとリトルエンディアンのレジスタダンプを手でバイトをひっくり返さずに比べるため、信頼できる bswap が常に必要です。
組み込みとファームウェアのチームは、ヘッダを書くときやフラッシュイメージを確かめるとき、設定定数・CRC シード・マジックナンバーをネットワーク順と MCU のホスト順の間で変換します。
エンディアンを教える側には、整数を固定したまま選んだ幅でバイトだけを逆にするライブのオラクルが必要で、リトルエンディアンホストで htons を 0x1234 にかけると 0x3412 になる理由を学習者が見られます。
シリアライザ向けのテストベクトルを作る継続的インテグレーションのスクリプトは、整数一つのために巨大なバイナリツール一式を引き込む代わりに、小さな純粋関数で足ります。検証失敗は残高を消費しません。要求を小さく保ち、テストでは hex 文字列を固定すれば、課題・パーサ・エッジワーカー向けに再現可能なエンディアン入れ替えが得られます。
活用例
ネットワーク順とホスト順
16 ビットまたは 32 ビットの整数を、htons、htonl、ntohs、ntohl と同じようにビッグエンディアンの回線形式とホストのリトルエンディアンメモリの間で変換します。
ファーム定数と hex ダンプ
hex ダンプと C の整数リテラルがエンディアンで食い違うとき、マジックナンバー・長さ・CRC シードのバイトを逆にします。
エンディアンの授業
同じ整数の十六進を 8・16・32・64 ビットで両方示し、入れ替えがバイトを逆にするだけだと学習者に見せます。
よくある質問
htons や bswap と同じですか?
はい。 16 ビットではリトルエンディアンホストの htons/ntohs、32 ビットでは htonl/ntohl と 32 ビット bswap、64 ビットでは 8 バイト bswap に一致します。
値が幅に収まらないとどうなりますか?
計算機はラップも切り詰めもしません。より広い容器を選ぶか、収まる値を送ってください。
負の数は使えますか?
使えます。 負の値は選んだ幅の二の補数になり、その符号なしパターンのバイトが逆になります。
値がビッグエンディアンかリトルエンディアンかを指定する必要はありますか?
必要ありません。整数を普段どおり10進か0x付きの16進で入力し、幅を選ぶだけです。結果は、その幅の中でバイトを逆順にした整数で、お使いの機器について何も推測しません。
2回反転すると元の値に戻りますか?
戻ります。同じ幅で2回バイトを反転すると、最初の値がそのまま得られます。そのため、機器の順序とネットワーク順を行き来する変換の確認に使えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/byte-order-swap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"0x12345678","width":32}'const res = await fetch("https://api.kit.forhosting.com/dev/byte-order-swap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0x12345678",
"width": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/byte-order-swap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0x12345678",
"width": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/byte-order-swap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0x12345678","width":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0x12345678","width":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/byte-order-swap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": "0x12345678",
"width": 32
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.byte_order_swap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
回線上では 0x12345678 に見える長さフィールドが、リトルエンディアンのメモリでは 0x78563412 として置かれ、レジスタをダンプしてネットワーク順の値が欲しいときも同じ逆転が起きます。このバイト順入れ替え計算機は、整数と 8・16・32・64 ビットの幅を受け取り、その容器内のバイトを逆順にし、入れ替え前後の十六進値に加え、対応する十進表記とバイト配列を返します。選んだ幅に収まらない値、欠落フィールド、不正な幅は黙ってラップせず invalid_input で失敗します。
入力契約、応答の形、エラーの扱い
整数は選んだ幅に収まる必要があります。非負値は 2 の幅乗から 1 を引いた値が上限で、負値は二の補数として解釈され、その幅の符号付き範囲に入らねばなりません。POST で必須フィールドが二つの JSON 本体を送ります。value は入れ替える整数、width は容器のビット幅です。value は JSON 数値、十進文字列、0x 接頭の十六進文字列、任意で 0b の二進文字列でもよく、別名 number、n、integer、hex を受け付けます。width は 8、16、32、64 のいずれか(別名 bits、bit_width、size)で、数値でも 32bit のような短いトークンでも構いません。溢れ、欠落フィールド、空文字、非整数、閉じた集合の外の幅は、フィールド名付きの invalid_input で失敗し、課金されません。成功時の本体には width と byte_count、ゼロ埋め大文字の 0x 文字列である hex_before と hex_after、64 ビット結果でも桁を落とさない正確な十進文字列 decimal_before と decimal_after、MSB 先頭の 0–255 配列 bytes_before と bytes_after、そして各大きさが JavaScript の安全整数範囲に収まる場合は decimal_before_number と decimal_after_number が含まれます。例: value 0x12345678 と width 32 は hex_before 0x12345678、hex_after 0x78563412、バイト 18,52,86,120 を 120,86,52,18 へ逆転します。64 ビット結果が正確でないときは、任意の数値フィールドは null にせず省略します。
バイト順入れ替え API が役立つ場面
バイト順入れ替え計算機で検索されるコンテンツサイトは、同じモジュール上で有料 API とバイト単位で一致する無料ブラウザ経路を得ます。実装は純粋な parse のティア A のため、成功した呼び出しは毎回公表の基本料金 $0.002 で、モデルトークンも外向き通信もありません。
技術的な質問
整数のバイト順をどう入れ替えますか?
value(十進または 0x hex)と width(8、16、32、64)を送ってください。API はその容器内のバイトを逆にし、hex_before、hex_after、対応する十進とバイト配列を返します。
バイト順入れ替え計算機の料金は?
ブラウザツールは無料です。API 要求は成功 1 回あたり $0.002 の前払い KIT 残高を使い、無効入力は課金されません。