戻る

MessagePack / CBOR エンコード・デコード

データ変換

読み込み中

ツールを読み込んでいます

ツールのコードは開いたときにのみ読み込まれます。

このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。

このツールについて

JSON または型付き JSON を符号化し、入力を送信せずローカルでバイナリを確認します。 通常の JSON の整数トークンは正確に保持します。小数・指数は binary64 を使用し、同じ十進値へ往復できる必要があります。バイト列、非文字列キー、特殊値には型付き JSON を使います。デコード結果は常に型付き JSON です。

主な用途

  • .msgpack や .cbor ファイルをアップロードせず確認する。
  • API テストデータを JSON、型付き JSON、Hex、Base64 間で変換する。
  • 正確な 64 ビット ID、バイナリフィールド、非文字列キーを検証する。

使い方

  1. 1.MessagePack または CBOR と、符号化または復号を選びます。
  2. 2.符号化には通常または型付き JSON を選び、復号には Hex/Base64 またはバイナリファイルを指定します。
  3. 3.変換後に完全な型付き出力を確認し、コピーや保存を行います。復号後のバイナリ保存は元のバイトを保持します。中止や入力変更で古い結果は消去されます。

型付き入力の厳密な例

例 1 · msgpack

msgpack
["null"]
c0

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 2 · cbor

cbor
["null"]
f6

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 3 · msgpack

msgpack
["int","9007199254740993"]
cf0020000000000001

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 4 · cbor

cbor
["int","18446744073709551615"]
1bffffffffffffffff

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 5 · msgpack

msgpack
["bytes","00ff"]
c40200ff

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 6 · cbor

cbor
["bytes","00ff"]
4200ff

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 7 · msgpack

msgpack
["float","-0"]
cb8000000000000000

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 8 · cbor

cbor
["map",[[["int","7"],["str","x"]]]]
a1076178

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 9 · msgpack

msgpack
["ext",7,"00ff"]
d50700ff

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 10 · cbor

cbor
["tag","2",["bytes","010000000000000000"]]
c249010000000000000000

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 11 · cbor

cbor
["undefined"]
f7

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 12 · cbor

cbor
["simple",16]
f0

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

例 13 · msgpack

msgpack
["array",[["bool",true],["str","猫"]]]
92c3a3e78cab

このバイナリ形式と型付き JSON を選びます。完全な Hex 出力を示します。

よくある入力エラー

  • マップまたはオブジェクトのキーが重複しています。値は破棄していません。
  • 必要なパディングを含む標準 Base64 を使ってください。
  • 不定長 CBOR には対応しません。
  • 整数が形式のネイティブ範囲外です。必要なら CBOR 大整数タグとバイト列を使います。
  • キーは文字列、整数、バイト列、真偽値、null のみ対応します。

制限と注意事項

  • バイナリ入出力は 262,144 バイト、テキストは UTF-8 で 1,048,576 バイト、型付き出力は 2,097,152 バイトまで。JSON 構文とバイナリ値の深さは 32、値は 10,000 個まで。ワーカーは 5 秒で終了します。
  • キーは文字列、整数、バイト列、真偽値、null のみ。重複キーを拒否します。CBOR タグは大整数を含め不透明なまま保持します。MessagePack 拡張 -1 は生の時刻形式を検証し、0–127 は不透明に保持します。タグの解釈、不定長、複合・浮動小数キー、連結値には対応しません。
  • MessagePack の整数範囲は −2^63~2^64−1、CBOR は −2^64~2^64−1 です。さらに大きい CBOR 整数には不透明なタグ 2/3 とバイト列を使います。整数文字列は 128 文字までです。
  • Float16/32/64 は binary64 の意味値に復号されます。負のゼロ、NaN、無限大は明示的なタプルです。符号化は float64 を使い、元の幅や NaN ペイロードは再符号化で保持しません。
  • JSON 構文自体も 32 段、10,000 値までで、型付きのラッパーを含みます。そのためバイナリの深さ 32 より先に制限に達する場合があります。過大な出力は切り詰めず拒否します。

よくある質問

なぜ通常の JSON で出力しないのですか?

JSON はバイト、拡張、タグ、undefined、NaN、非文字列キーを直接表せません。全値を明示的な型付きタプルにすることで、ユーザーのオブジェクトを制御記号と混同しません。

CBOR タグを検証または実行しますか?

タグは符号なし 64 ビット番号と内容を包む不透明な値です。日時、大整数、埋め込み CBOR、URL、正規表現などの意味や用途別の内容は解釈しません。埋め込みバイトやコードを実行しません。

同じバイナリを取り戻せますか?

復号直後のバイナリ保存は元のバイトを保持します。復号後の再符号化は対応する意味値を保持しますが、幅や NaN ビットは変わる場合があります。マップの入力順序を保持し、正規形は保証しません。

0.1 はどうなりますか?

最も近い binary64 値に符号化し、浮動小数タプルで表します。十進トークンは binary64 の最短十進表記を経て同じ十進値へ戻る必要があります。過剰精度、オーバーフロー、非ゼロのアンダーフローは拒否します。

関連ツール