CoderTools

CBORコーデック

CBORバイナリデータ形式のエンコードとデコード

🔒 100% ローカル処理入力されたデータはすべてブラウザ内で処理されます。サーバーに送信されることはありません。

ネットワークキャプチャ、IoTデバイス、APIレスポンスからのCBORデータを貼り付けてください

サンプルデータ

デコード結果

CBORデータを入力し、デコードボタンをクリックして結果を表示

CBORデータ型リファレンス

メジャータイプ 型名 ヘッダーバイト 説明
0符号なし整数0x00-0x1B0から2^64-1までの非負整数
1負の整数0x20-0x3B-1から-2^64までの負の整数
2バイト文字列0x40-0x5B任意長の生バイナリデータ
3テキスト文字列0x60-0x7BUTF-8エンコードされたテキスト文字列
4配列0x80-0x9Bデータ項目の順序付きコレクション
5マップ0xA0-0xBBキーと値のペア(オブジェクト)
6タグ0xC0-0xDB拡張型のセマンティックタグ
7単純値/浮動小数点0xE0-0xFBブール値、null、undefined、浮動小数点数

CBORプロトコルドキュメント

CBORとは

CBOR(Concise Binary Object Representation)は、RFC 8949で定義されたバイナリデータシリアライゼーション形式です。JSONのコンパクトな代替として設計されており、JSONのデータモデルとの互換性を維持しながら、構造化データを効率的なバイナリ形式にエンコードします。この形式は自己記述型であり、デコーダは外部スキーマ定義なしでデータを解析できます。CBORは、帯域幅と処理能力が限られたリソースであるIoTデバイスや組み込みシステムなどの制約のある環境向けに特別に設計されています。

バイナリエンコーディング構造

すべてのCBORデータ項目は、メジャータイプ(3ビット)と追加情報(5ビット)の2つのフィールドを含む1バイトで始まります。メジャータイプはデータカテゴリ(整数、文字列、配列など)を決定し、追加情報は引数の長さを示すか、小さな値を直接保持します。このコンパクトなヘッダー設計により、小さな整数のような単純な値は1バイトで済みます。

追加情報 意味
0-23値が直接エンコード(0-23)
241バイトの符号なし整数が続く
252バイトの符号なし整数が続く(ビッグエンディアン)
264バイトの符号なし整数が続く(ビッグエンディアン)
278バイトの符号なし整数が続く(ビッグエンディアン)
31不定長(文字列、配列、マップ用)

コンテナ長エンコードオプション

CBORはコンテナ(配列とマップ)の長さエンコードに柔軟性を提供します。すべての有効なエンコードは意味的に同一のデータを生成しますが、バイナリ表現は異なります。このツールは異なるシステム要件に対応する4つのエンコードモードを提供します。

エンコード例:{"name":"Alice","age":30}

同じJSONオブジェクトは複数の有効な方法でエンコードできます:

モード ヘッダバイト 説明
CompactA2 ...0xA2 = fixmap(2)、最小エンコード
Explicit 16-bitB9 00 02 ...0xB9 = map16、2バイト長が続く
Explicit 32-bitBA 00 00 00 02 ...0xBA = map32、4バイト長が続く
IndefiniteBF ... FF0xBF = 不定長map、0xFFで終了

4つのエンコードはすべて同一のJSONにデコードされます。サイズ効率にはコンパクト、プロトコル互換性には明示的長、ストリーミングには不定長を選択してください。

CBORとJSONの比較

両形式は同じ論理データモデルを表現しますが、異なる目的に対応しています。CBORはコンパクトなエンコーディングと処理効率を優先し、JSONは人間の可読性と普遍的なテキストベースの相互運用性を重視しています。

CBORの利点
  • エンコードサイズが小さい(通常30-50%削減)
  • ネイティブバイナリデータサポート
  • より高速な解析とエンコード
  • 日付やURIなどの組み込みセマンティックタグ
JSONの利点
  • 人間が読み書き可能
  • ブラウザと言語の普遍的サポート
  • デバッグとログ記録が容易

一般的な用途

  • IoTデバイス通信とセンサーデータ送信
  • WebAuthn/FIDO2認証プロトコル
  • COSE(CBORオブジェクト署名と暗号化)セキュリティ
  • CoAP(制約アプリケーションプロトコル)メッセージング
  • 組み込みシステムの設定とデータストレージ

セマンティックタグ

CBORタグはデータ項目にセマンティックな意味を提供します。タグは、囲まれた値をどのように解釈すべきかを示すオプションのラッパーで、基本データ型を超えた型拡張を可能にします。

タグ番号 セマンティックな意味
0標準日時文字列(RFC 3339)
1エポックベースの日時(Unixタイムスタンプ)
2正のビッグナム
3負のビッグナム
32URI参照
55799CBOR自己記述(マジックナンバー)

クイックメニュー

最近のツールはありません