Codec MessagePack
Mã hóa và giải mã định dạng tuần tự hóa nhị phân MessagePack
Dán dữ liệu MessagePack từ phản hồi API, tệp nhật ký hoặc bắt gói mạng
Nhấp để chèn dữ liệu mẫu
Kết quả giải mã
Nhập dữ liệu MessagePack và nhấp Giải mã để xem kết quả
Trình xem byte
Nhập dữ liệu JSON hợp lệ để mã hóa thành MessagePack
Mã hóa độ dài container
- Compact: Sử dụng byte tối thiểu (fixarray/fixmap khi ≤15 phần tử)
- Explicit 16-bit: Luôn sử dụng độ dài 2 byte (định dạng array16/map16)
- Explicit 32-bit: Luôn sử dụng độ dài 4 byte (định dạng array32/map32)
Nhấp để chèn ví dụ JSON
Kết quả mã hóa
Nhập dữ liệu JSON và nhấp Mã hóa để tạo MessagePack
Trình xem byte
Thống kê mã hóa
Tham chiếu kiểu dữ liệu MessagePack
| Tên kiểu | Phạm vi byte định dạng | Mô tả |
|---|---|---|
| FixInt dương | 0x00-0x7F | Số nguyên từ 0 đến 127 (một byte) |
| FixInt âm | 0xE0-0xFF | Số nguyên từ -32 đến -1 (một byte) |
| FixMap | 0x80-0x8F | Map với 0-15 cặp khóa-giá trị |
| FixArray | 0x90-0x9F | Mảng với 0-15 phần tử |
| FixStr | 0xA0-0xBF | Chuỗi dài 0-31 byte |
| Nil | 0xC0 | Đại diện cho giá trị null/nil |
| Boolean | 0xC2-0xC3 | True (0xc3) hoặc False (0xc2) |
| Nhị phân | 0xC4-0xC6 | Dữ liệu nhị phân thô (bin8/bin16/bin32) |
| Mở rộng | 0xC7-0xC9, 0xD4-0xD8 | Kiểu do ứng dụng định nghĩa với mã kiểu |
| Số thực | 0xCA-0xCB | Số thực dấu phẩy động 32-bit hoặc 64-bit |
| Số nguyên không dấu | 0xCC-0xCF | Số nguyên không dấu 8/16/32/64-bit |
| Số nguyên có dấu | 0xD0-0xD3 | Số nguyên có dấu 8/16/32/64-bit |
| Chuỗi | 0xD9-0xDB | Chuỗi UTF-8 (str8/str16/str32) |
| Mảng | 0xDC-0xDD | Mảng với độ dài 16-bit hoặc 32-bit |
| Map | 0xDE-0xDF | Map với độ dài 16-bit hoặc 32-bit |
Tài liệu giao thức MessagePack
MessagePack là gì
MessagePack là định dạng tuần tự hóa nhị phân được thiết kế để trao đổi dữ liệu hiệu quả. Được tạo bởi Sadayuki Furuhashi vào năm 2008, nó đóng gói cấu trúc dữ liệu tương tự JSON thành biểu diễn nhị phân nhỏ gọn, thường nhỏ hơn JSON 50% trong khi phân tích cú pháp nhanh hơn. Định dạng được sử dụng rộng rãi trong Redis, Fluentd và nhiều hệ thống giao tiếp thời gian thực nơi hiệu suất quan trọng.
Cấu trúc mã hóa nhị phân
MessagePack sử dụng lược đồ mã hóa kiểu-độ dài-giá trị. Byte đầu tiên (byte định dạng) xác định kiểu dữ liệu và có thể chứa chính giá trị đó cho các số nguyên nhỏ và chuỗi ngắn. Các giá trị lớn hơn sử dụng byte bổ sung cho độ dài và tải trọng. Thiết kế này cho phép MessagePack mã hóa các giá trị nhỏ cực kỳ hiệu quả trong khi vẫn hỗ trợ cấu trúc dữ liệu lớn.
| Byte định dạng | Ý nghĩa |
|---|---|
| 0x00-0x7F | Fixint dương (0-127, giá trị trong byte) |
| 0x80-0x8F | Fixmap (0-15 cặp, đếm trong 4 bit thấp) |
| 0x90-0x9F | Fixarray (0-15 phần tử, đếm trong 4 bit thấp) |
| 0xA0-0xBF | Fixstr (0-31 byte, độ dài trong 5 bit thấp) |
| 0xC0-0xDF | Các kiểu Nil, boolean, bin, ext, float, int |
| 0xE0-0xFF | Fixint âm (-32 đến -1) |
So sánh MessagePack và JSON
Cả hai định dạng đều biểu diễn cùng một mô hình dữ liệu nhưng tối ưu hóa cho các kịch bản khác nhau. MessagePack ưu tiên kích thước nhỏ gọn và tốc độ phân tích, lý tưởng cho các hệ thống thông lượng cao. JSON ưu tiên khả năng đọc của con người và tính tương thích phổ quát trên tất cả các nền tảng.
- Nhỏ hơn JSON 30-50%
- Hỗ trợ dữ liệu nhị phân gốc
- Tuần tự hóa và phân tích nhanh hơn
- An toàn kiểu với các kiểu số nguyên riêng biệt
- Con người có thể đọc và chỉnh sửa
- Hỗ trợ phổ quát trên trình duyệt và ngôn ngữ
- Gỡ lỗi và ghi nhật ký dễ dàng hơn
Ứng dụng phổ biến
- Tuần tự hóa dữ liệu Redis và bộ nhớ đệm
- Giao thức giao tiếp thời gian thực (game, chat)
- Tổng hợp và chuyển tiếp log Fluentd
- Framework RPC (MessagePack-RPC)
- Ứng dụng di động và nhúng với hạn chế băng thông
Kiểu mở rộng
MessagePack hỗ trợ các kiểu mở rộng do ứng dụng định nghĩa. Mỗi mở rộng có mã kiểu (số nguyên từ -128 đến 127) và tải trọng nhị phân. Các mở rộng tiêu chuẩn phổ biến bao gồm timestamp (kiểu -1), lưu trữ giây và nano giây để biểu diễn thời gian chính xác.
| Mã kiểu | Sử dụng phổ biến |
|---|---|
| -1 | Timestamp (chính thức) |
| 0-127 | Kiểu do ứng dụng định nghĩa |
Công Cụ Liên Quan
CBOR Codec
Mã hóa và giải mã định dạng nhị phân CBOR với chuyển đổi JSON, trình xem hex và thẻ ngữ nghĩa cho phát triển IoT
Trình Định Dạng JSON
Định dạng và xác thực dữ liệu JSON để cải thiện khả năng đọc và gỡ lỗi
Bộ Mã Hóa/Giải Mã Base64
Mã hóa và giải mã chuỗi Base64 nhanh chóng, hỗ trợ chuyển đổi cả văn bản và tệp
Công Cụ Protocol Buffers
Bộ mã hóa/giải mã Protocol Buffers trực tuyến. Phân tích lược đồ .proto, mã hóa JSON sang nhị phân hoặc giải mã nhị phân sang JSON