CoderTools

CBOR Codec

Mã hóa và giải mã định dạng dữ liệu nhị phân CBOR

🔒 100% Xử lý cục bộDữ liệu bạn nhập được xử lý hoàn toàn trong trình duyệt. Không có dữ liệu nào được tải lên máy chủ.

Dán dữ liệu CBOR từ bắt gói mạng, thiết bị IoT hoặc phản hồi API

Dữ liệu mẫu

Kết quả giải mã

Nhập dữ liệu CBOR và nhấn Giải mã để xem kết quả

Tham chiếu kiểu dữ liệu CBOR

Kiểu chính Tên kiểu Byte tiêu đề Mô tả
0Số nguyên không dấu0x00-0x1BSố nguyên không âm từ 0 đến 2^64-1
1Số nguyên âm0x20-0x3BSố nguyên âm từ -1 đến -2^64
2Chuỗi byte0x40-0x5BDữ liệu nhị phân thô có độ dài tùy ý
3Chuỗi văn bản0x60-0x7BChuỗi văn bản được mã hóa UTF-8
4Mảng0x80-0x9BTập hợp có thứ tự các phần tử dữ liệu
5Map0xA0-0xBBCác cặp khóa-giá trị (đối tượng)
6Tag0xC0-0xDBThẻ ngữ nghĩa cho các kiểu mở rộng
7Simple/Float0xE0-0xFBBoolean, null, undefined và số dấu phẩy động

Tài liệu giao thức CBOR

CBOR là gì?

CBOR (Concise Binary Object Representation) là định dạng tuần tự hóa dữ liệu nhị phân được định nghĩa trong RFC 8949. Được thiết kế như một giải pháp thay thế nhỏ gọn cho JSON, CBOR mã hóa dữ liệu có cấu trúc thành định dạng nhị phân hiệu quả trong khi duy trì khả năng tương thích với mô hình dữ liệu JSON. Định dạng này tự mô tả, nghĩa là bộ giải mã có thể phân tích dữ liệu mà không cần định nghĩa schema bên ngoài. CBOR được thiết kế đặc biệt cho các môi trường hạn chế như thiết bị IoT và hệ thống nhúng nơi băng thông và sức mạnh xử lý là tài nguyên hạn chế.

Cấu trúc mã hóa nhị phân

Mỗi phần tử dữ liệu CBOR bắt đầu bằng một byte đơn chứa hai trường: kiểu chính (3 bit) và thông tin bổ sung (5 bit). Kiểu chính xác định danh mục dữ liệu (số nguyên, chuỗi, mảng, v.v.), trong khi thông tin bổ sung cho biết độ dài đối số hoặc chứa trực tiếp các giá trị nhỏ. Thiết kế header nhỏ gọn này có nghĩa là các giá trị đơn giản như số nguyên nhỏ chỉ cần một byte duy nhất.

Thông tin bổ sung Ý nghĩa
0-23Giá trị được mã hóa trực tiếp (0-23)
24Theo sau là 1 byte không dấu
25Theo sau là 2 byte không dấu (big-endian)
26Theo sau là 4 byte không dấu (big-endian)
27Theo sau là 8 byte không dấu (big-endian)
31Độ dài không xác định (cho chuỗi, mảng, map)

Tùy chọn mã hóa độ dài container

CBOR cung cấp sự linh hoạt trong cách mã hóa độ dài container (mảng và map). Mặc dù tất cả các mã hóa hợp lệ tạo ra dữ liệu ngữ nghĩa giống nhau, biểu diễn nhị phân khác nhau. Công cụ này cung cấp bốn chế độ mã hóa cho các yêu cầu hệ thống khác nhau.

Ví dụ mã hóa: {"name":"Alice","age":30}

Cùng một đối tượng JSON có thể được mã hóa theo nhiều cách hợp lệ:

Chế độ Byte tiêu đề Mô tả
CompactA2 ...0xA2 = fixmap(2), mã hóa nhỏ nhất
Explicit 16-bitB9 00 02 ...0xB9 = map16, theo sau là độ dài 2 byte
Explicit 32-bitBA 00 00 00 02 ...0xBA = map32, theo sau là độ dài 4 byte
IndefiniteBF ... FF0xBF = map không xác định, kết thúc bằng 0xFF

Cả bốn mã hóa đều giải mã thành JSON giống nhau. Chọn nhỏ gọn để tiết kiệm kích thước, độ dài rõ ràng cho tương thích giao thức, hoặc không xác định cho các tình huống streaming.

So sánh CBOR và JSON

Cả hai định dạng đều đại diện cho cùng một mô hình dữ liệu logic nhưng phục vụ các mục đích khác nhau. CBOR ưu tiên mã hóa nhỏ gọn và hiệu quả xử lý, trong khi JSON nhấn mạnh khả năng đọc của con người và khả năng tương tác dựa trên văn bản phổ quát.

Ưu điểm của CBOR
  • Kích thước mã hóa nhỏ hơn (thường 30-50%)
  • Hỗ trợ gốc dữ liệu nhị phân
  • Phân tích và mã hóa nhanh hơn
  • Thẻ ngữ nghĩa tích hợp cho ngày tháng, URI, v.v.
Ưu điểm của JSON
  • Con người có thể đọc và chỉnh sửa
  • Hỗ trợ phổ quát trình duyệt/ngôn ngữ
  • Gỡ lỗi và ghi log dễ dàng hơn

Ứng dụng phổ biến

  • Giao tiếp thiết bị IoT và truyền dữ liệu cảm biến
  • Giao thức xác thực WebAuthn/FIDO2
  • Bảo mật COSE (ký và mã hóa đối tượng CBOR)
  • Nhắn tin CoAP (giao thức ứng dụng hạn chế)
  • Cấu hình hệ thống nhúng và lưu trữ dữ liệu

Thẻ ngữ nghĩa

Các thẻ CBOR cung cấp ý nghĩa ngữ nghĩa cho các phần tử dữ liệu. Thẻ là các wrapper tùy chọn cho biết cách giải thích giá trị được bọc, cho phép mở rộng kiểu vượt ra ngoài các kiểu dữ liệu cơ bản.

Số thẻ Ý nghĩa ngữ nghĩa
0Chuỗi ngày/giờ tiêu chuẩn (RFC 3339)
1Ngày/giờ dựa trên epoch (Unix timestamp)
2Số dương lớn
3Số âm lớn
32Tham chiếu URI
55799CBOR tự mô tả (magic number)

Menu Nhanh

Chưa có công cụ gần đây