Tôi đã được trao một tài liệu định nghĩa một tập hợp các thư được truyền và nhận qua một kênh truyền thông nối tiếp. Tôi muốn nhận các tin nhắn đến và deserialize chúng vào các đối tượng, và serialize tin nhắn gửi đi của tôi là tốt. Mã hóa trên dây được thiết lập và không thể thay đổi, và bao gồm bitfields khác nhau trong tiêu đề và trọng tải khác nhau, ví dụ:Nối tiếp và sắp xếp lại một trường bit
class Message{
int msg_num : 7
int dest_addr : 4
bool SRR : 1
bool IDE : 1
int source_addr : 6
//... and so on...
}
Tôi đã xem xét việc sử dụng protobufs, nhưng có vẻ như phương pháp varint của họ về mã hóa là thành lập. Tôi cũng đã xem xét boost-serialization, nhưng dựa trên những gì tôi đã đọc cho đến nay, cách mã hóa được thực hiện ở đó không hoàn toàn rõ ràng.
Vì vậy, một số câu hỏi:
- Tôi có thể sử dụng tăng-serialization để chuyển đổi bytestream của tôi để đối tượng?
- Với mục tiêu không phải cuộn các thói quen của riêng tôi để tuần tự hóa (một mớ hỗn độn), có cơ chế ưu tiên để hoàn thành nhiệm vụ của tôi hay không.)
Liệu "int msg_num: 7" có nghĩa là lĩnh vực này là 7 bit số nguyên ? – grieve
Có. ": Num" cho biết độ dài của bitfield – jdt141
Tôi thấy câu hỏi này khó trả lời, vì chỉ có biểu diễn được đóng gói được hiển thị chứ không phải các đối tượng tin nhắn chưa được giải nén mà bạn muốn nối tiếp và deserialise. –