CoderTools

Codec MessagePack

Mã hóa và giải mã định dạng tuần tự hóa nhị phân MessagePack

🔒 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 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ả

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

Tên kiểu Phạm vi byte định dạng Mô tả
FixInt dương0x00-0x7FSố nguyên từ 0 đến 127 (một byte)
FixInt âm0xE0-0xFFSố nguyên từ -32 đến -1 (một byte)
FixMap0x80-0x8FMap với 0-15 cặp khóa-giá trị
FixArray0x90-0x9FMảng với 0-15 phần tử
FixStr0xA0-0xBFChuỗi dài 0-31 byte
Nil0xC0Đại diện cho giá trị null/nil
Boolean0xC2-0xC3True (0xc3) hoặc False (0xc2)
Nhị phân0xC4-0xC6Dữ liệu nhị phân thô (bin8/bin16/bin32)
Mở rộng0xC7-0xC9, 0xD4-0xD8Kiểu do ứng dụng định nghĩa với mã kiểu
Số thực0xCA-0xCBSố thực dấu phẩy động 32-bit hoặc 64-bit
Số nguyên không dấu0xCC-0xCFSố nguyên không dấu 8/16/32/64-bit
Số nguyên có dấu0xD0-0xD3Số nguyên có dấu 8/16/32/64-bit
Chuỗi0xD9-0xDBChuỗi UTF-8 (str8/str16/str32)
Mảng0xDC-0xDDMảng với độ dài 16-bit hoặc 32-bit
Map0xDE-0xDFMap 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-0x7FFixint dương (0-127, giá trị trong byte)
0x80-0x8FFixmap (0-15 cặp, đếm trong 4 bit thấp)
0x90-0x9FFixarray (0-15 phần tử, đếm trong 4 bit thấp)
0xA0-0xBFFixstr (0-31 byte, độ dài trong 5 bit thấp)
0xC0-0xDFCác kiểu Nil, boolean, bin, ext, float, int
0xE0-0xFFFixint â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.

Ưu điểm của MessagePack
  • 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
Ưu điểm của JSON
  • 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
-1Timestamp (chính thức)
0-127Kiểu do ứng dụng định nghĩa

Menu Nhanh

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