MessagePack / CBOR エンコード・デコード
データ変換
読み込み中
ツールを読み込んでいます
ツールのコードは開いたときにのみ読み込まれます。
このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。
このツールについて
JSON または型付き JSON を符号化し、入力を送信せずローカルでバイナリを確認します。 通常の JSON の整数トークンは正確に保持します。小数・指数は binary64 を使用し、同じ十進値へ往復できる必要があります。バイト列、非文字列キー、特殊値には型付き JSON を使います。デコード結果は常に型付き JSON です。
主な用途
- .msgpack や .cbor ファイルをアップロードせず確認する。
- API テストデータを JSON、型付き JSON、Hex、Base64 間で変換する。
- 正確な 64 ビット ID、バイナリフィールド、非文字列キーを検証する。
使い方
- 1.MessagePack または CBOR と、符号化または復号を選びます。
- 2.符号化には通常または型付き JSON を選び、復号には Hex/Base64 またはバイナリファイルを指定します。
- 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 の最短十進表記を経て同じ十進値へ戻る必要があります。過剰精度、オーバーフロー、非ゼロのアンダーフローは拒否します。
- RFC 8949 · CBOR
- MessagePack specification
- MessagePack JavaScript implementation
- cbor2 JavaScript implementation