Base16 RFC 4648 エンコーダー&デコーダー
テキストをRFC 4648のBase16、つまり1バイトを2文字で表す標準の大文字十六進数に変換します。Helloは48656C6C6Fになります。復号では空白やコロン入りのダンプも受け付け、形の崩れた入力は受け付けません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- Hello
- 計算モード
- Encode
- 結果
- 48656C6C6F
- 入力
- Hello
- Base 16
- 48656C6C6F
- 16 進
- 48656C6C6F
RFC 4648 Base16 は、標準化された大文字の 16 進エンコーディングです。入力の各バイトは、パディングや曖昧なグリフなしに、アルファベット 0-9 と A-F のちょうど 2 文字に変換されます。このツールは、プレーンな UTF-8 テキストを正規の Base16 形式にエンコードし、Base16 の hex 文字列をテキストにデコードします。暗号ライブラリをインストールせずに、どちらの方向でも貼り付けられます。エンコードは標準の要件どおり常に大文字の桁を出力し、デコードはスペース、コロン、大文字小文字の混在といった貼り付け時の一般的なノイズを受け入れ、変換前に正規化と検証を行います。開発者はプロトコルのフィクスチャに、教師は基数の授業に、オペレーターは hex ダンプのデバッグに利用します。
RFC 4648 Base16 とは何か、アルファベットの仕組み
Base16 は RFC 4648 で定義されたバイナリ・テキスト変換エンコーディングで、8 ビットのオクテットごとを 16 文字のアルファベットから 2 つのシンボルに対応づけます。アルファベットは 0 から 9 の 10 進数字と、A から F のラテン大文字で構成されます。
これは、プロトコル文書、パケットトレース、多くのハードウェアマニュアルで使われるおなじみの大文字 16 進表記と同一です。エンコードは入力を左から右へたどり、各バイトを上位ニブルと下位ニブルに分け、各ニブルをアルファベットの 1 文字に対応づけるため、出力文字列の長さは常にバイト数の 2 倍になります。
コアのエンコーディングにはパディング文字も折り返し規則もなく、改行や区切りが必要な利用側は表示用にのみ追加します。デコードはこの対応を逆にたどり、連続する 2 つの hex 桁が 1 バイトになります。
RFC 4648 準拠をうたう実装は大文字の A–F でエンコードしますが、多くのデコーダーは大文字小文字が混在するツールとの相互運用のため小文字の a–f も受け入れます。
スペース、コロン、アンダースコア、ハイフンなどの装飾的な区切りは、手作業で編集されたダンプによく現れるため、長さとアルファベットの検査の前に取り除く必要があり、残った連続文字列は偶数長でなければなりません。0-9A-Fa-f 以外の文字が現れた場合や桁数が奇数の場合、デコーダーは明確に失敗しなければなりません。
実践的なヒント、制限、他のエンコーディングとの違い
プロトコルのサンプル、ファームウェアのログ、フィクスチャファイルから得た Base16 文字列をすでに持っている場合は decode を選んでください。往復チェックは最速のスモークテストです。
Hello のような既知の単語をエンコードし、おなじみの大文字の結果 48656C6C6F を確認し、その文字列をデコードして元のフレーズがバイト単位で復元されることを確認します。数メガバイトのダンプはオフラインか専用のバイナリツールで扱うものです。このツールは Base64 や Base64URL ではありません。
それらのアルファベットは 64 シンボルでパディングを使い、より密に詰め込みます。Base58 でもありません。Base58 は人の転記のために曖昧なグリフを省きます。
また、整数や浮動小数点数の基数コンバーターでもありません。1 つの hex 数値を 10 進や 2 進に変換するには、桁を不透明なバイト列として扱うのではなく、専用の数値フォーマット機能を使ってください。
RFC 4648 や教科書の hex に一致する 1:1 でニブルが見えるダンプが必要なら Base16 を、可読性より密度が重要なら Base64 を選んでください。
授業では、同じ文を Base16 と Base64 で並べてエンコードして見せると、学習者は hex がなぜ長く、常に偶数長で、大文字の A–F が RFC 4648 の表 5 の標準形式なのかを理解できます。
活用例
テストでのプロトコルとフィクスチャの hex ダンプ
フィクスチャのテキストから正規の大文字 Base16 を生成し、暗号ライブラリへの依存なしに CI で decode が同じ UTF-8 バイトを復元することを確認できます。
RFC 4648 と 16 進表記の教育
教室で Hello を 48656C6C6F にエンコードし、0-9A-F のアルファベットを確認し、奇数長や無効な文字をあえて送って厳格な検証を示します。
よくある質問
この Base16 エンコーダーはどのアルファベットを使いますか?
RFC 4648 の Base16 アルファベット 0123456789ABCDEF です。エンコードは常に大文字の A–F を生成し、デコードは小文字の a–f と一般的な区切り文字も受け入れます。
Base16 は Base64 と同じですか?
いいえ。 Base16 は各バイトを 16 シンボルのアルファベットから 2 つの hex 桁に対応づけます。Base64 は 64 シンボルを使い、より密な詰め込みと任意のパディング文字を用います。
大きな hex 整数を 10 進数に変換できますか?
いいえ。 入力は RFC 4648 Base16 に基づく不透明なバイト列として扱われ、単一の多倍長整数としては扱われません。整数の hex から 10 進への変換には数値フォーマットのツールをご利用ください。
空白やコロン、小文字の入った十六進数も復号できますか?
できます。空白、コロン、アンダースコア、ハイフンは取り除かれ、小文字のaからfも受け付けるので、ログからコピーしたダンプもそのまま復号できます。残った数字は偶数の桁数である必要があります。
十六進数の桁数が奇数だとどうなりますか?
黙って壊れた結果を返さず、はっきりしたメッセージで受け付けません。0から9とAからF以外の文字や、正しいUTF-8のテキストにならないバイト列も同じく受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/base16-rfc4648 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base16-rfc4648", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base16-rfc4648",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base16-rfc4648", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base16-rfc4648", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base16_rfc4648",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 100000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
hex 桁数が奇数、アルファベット外の文字、有効な UTF-8 でないバイト列など、不正な入力は、静かな破損ではなく明確な invalid_input エラーを返します。処理はネットワーク、乱数シード、時計への依存がない純粋で決定的なバイト演算なので、無料のブラウザ実行とプリペイド API は毎回同じ JSON を返します。
RFC 4648 Base16 とは何か、アルファベットの仕組み
暗黙の置き換えは別のペイロードを捏造することになり、チェックサム、テストフィクスチャ、自動化パイプラインにとっては明確なエラーより悪い結果です。このページは、Base16 エンコーダー、RFC 4648 hex コンバーター、大文字 16 進のオンライン変換を探している方を対象としており、Base64、Base32、Base58 や、任意の大きな整数向けの汎用基数コンバーターではありません。
API の呼び出し方とレスポンスの内容
デフォルトのモードは encode で、text の UTF-8 バイトが RFC 4648 のアルファベットに従って大文字の Base16 文字列になります。必須の文字列フィールド text(エイリアス input、value、data)と、encode または decode のいずれかを取るオプションの mode を含む JSON ボディを送信します。decode モードは text を Base16 ペイロードとして扱い(スペースやコロン区切り、大文字小文字の混在も可)、正規化の後に復元された UTF-8 文字列を返します。入力長は 10 万文字に制限されており、1 回のリクエストが異常なダンプで Worker のメモリを使い果たすことを防ぎます。encode が成功すると、レスポンスには mode、input、result に加え、同じエンコード済み文字列を持つ base16 と hex、16 文字の定数 0123456789ABCDEF を持つ alphabet、値が rfc4648_base16 の alphabet_name、RFC 4648 Base16 が入る standard、UTF-8 バイト数の input_bytes、エンコード後の文字数の output_length、短い英語メッセージが含まれます。decode が成功すると、レスポンスには mode、input、result とデコード済み UTF-8 文字列の text、大文字の連続形式の base16_normalized、同じ alphabet と standard フィールド、input_length、output_bytes、対応するメッセージが含まれます。text の欠落、文字列でない text、サイズ超過の入力、不明な mode、奇数の hex 長、無効な Base16 文字、有効な UTF-8 でないデコード結果など、検証の失敗は invalid_input を返し、課金されることはありません。料金は成功したリクエストごとに $0.002 の定額で、単位は item、限界単価はゼロです。
実践的なヒント、制限、他のエンコーディングとの違い
人が読めるテキストや短い UTF-8 ペイロードを、仕様書、チケット、ユニットテスト用の正規の大文字 hex ダンプにしたい場合は encode を選んでください。decode リクエストで奇数長の hex 文字列や G や Z のような非 hex グリフを意図的に送り、クライアントが invalid_input とルールを示すエラーメッセージを処理できることを確認してください。ペイロードは公開されている文字数制限以内に収めてください。invalid_input を返す失敗したタスクはプリペイド残高を消費しないため、不正な hex を試す探索的なスクリプトを安く回せます。
連携の活用例
貼り付けたログやパケットトレースのデバッグ
スペースやコロン入りの hex ダンプを貼り付け、ペイロードが UTF-8 なら読めるテキストにデコードし、編集後に再エンコードして往復チェックができます。
技術的な質問
奇数長の hex 文字列や非 hex 文字をデコードするとどうなりますか?
API は invalid_input を返し、奇数長であること、または問題の文字とその位置を説明し、Base16 には 0-9A-F の偶数の桁が必要であることを示します。失敗したタスクは課金されません。
Base16 エンコーダーは無料ですか?
ブラウザのツールは無料で、ローカルで動作します。API 呼び出しはプリペイドの KIT 残高を使用し、成功したリクエストごとに $0.002 です。invalid_input の失敗は課金されません。