Giải mã Protobuf / MessagePack / CBOR / BSON online

Giải mã và mã hoá Protobuf (có .proto hoặc không cần schema), MessagePack, CBOR, BSON qua lại với JSON. Nhập base64, hex hoặc file; xuất base64, hex.

Công cụ miễn phí: 20 request mỗi phút.

Kết quả

Bấm “Chạy” để xem kết quả.

Chọn format (protobuf, msgpack, cbor, bson) và action. Để giải mã, gửi dữ liệu nhị phân qua data (base64 hoặc hex, tự nhận diện; bỏ qua khoảng trắng, 0x và dấu hai chấm) hoặc tải file; kết quả là JSON. Để mã hoá, gửi giá trị qua json; kết quả có base64, hex và kích thước. to chuyển giá trị vừa giải mã sang định dạng khác (ví dụ MessagePack → CBOR).

Protobuf: gửi schema qua proto (văn bản proto2 / proto3, hỗ trợ message lồng nhau, enum, map, oneof, trường repeated dạng packed, số nguyên 64 bit giữ chính xác dưới dạng chuỗi) và message_type (ví dụ shop.Order). Tên trường có thể theo .proto hoặc lowerCamelCase; enum nhận tên hoặc số; bytes dạng base64. defaults=true điền giá trị mặc định cho trường thiếu, enums_as_numbers=true trả enum dạng số. Nếu không có proto, dữ liệu được giải mã không cần schema: mỗi số hiệu trường kèm wire type và các cách đọc có thể (số không dấu, số có dấu zigzag, float / double, chuỗi UTF-8 hoặc message lồng nhau).

Trong JSON, dữ liệu nhị phân hiển thị dạng {"$bytes": "<base64>"}, tag CBOR dạng {"$tag": n, "value": …}, extension MessagePack dạng {"$ext": type, "$bytes": …}, số nguyên lớn dạng chuỗi và thời gian dạng ngày ISO; khi mã hoá cũng nhận đúng các dạng này. BSON dùng MongoDB Extended JSON ($oid, $date, $numberLong…, mặc định dạng relaxed, ejson=canonical cho dạng chuẩn). Giới hạn: 2 MB dữ liệu nhị phân.

Dùng trong code của bạn

curl -X POST "https://apibox.io.vn/v1/binary-formats" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"format":"protobuf","proto":"syntax = \"proto3\";\nmessage Test1 { int32 a = 1; }","data":"089601"}'

Tài liệu API → Nhận API key miễn phí

Hỏi đáp

Có giải mã Protobuf được khi không có file .proto không?

Được. Chế độ không schema hiển thị số hiệu trường, wire type và các giá trị có thể của từng trường, đồng thời mở các message lồng nhau. Muốn có tên và kiểu chính xác thì cần schema.

Có hỗ trợ import trong file .proto không?

Chỉ hỗ trợ một schema độc lập: hãy dán các message được import vào cùng văn bản. Các kiểu chuẩn google.protobuf được xử lý như message thông thường.

Số nguyên 64 bit được xử lý thế nào?

Được đọc và ghi chính xác: dạng chuỗi số thập phân trong JSON (int64 / uint64 của Protobuf, số nguyên lớn của MessagePack và CBOR) và dạng $numberLong trong BSON khi vượt quá phạm vi số của JavaScript.