2010-02-20 16 views
5

Tôi biết rằng bạn có thể sử dụng tăng tuần tự hóa để tuần tự hóa thành định dạng văn bản và sau đó đẩy qua ổ cắm, nhưng tôi muốn tuần tự hóa một lớp dữ liệu thống kê thành định dạng nhị phân (cả kích thước và mã hóa/giải mã nguyên nhân) . Có an toàn để sử dụng tăng tuần tự hóa cho việc này không?Có an toàn khi sử dụng việc tuần tự hóa tăng cường để tuần tự hóa các đối tượng trong C++ sang định dạng nhị phân để sử dụng trên ổ cắm?

lo lắng cụ thể của tôi là:

  1. Sự khác nhau giữa kiểu dữ liệu integer kích thước trên các nền tảng khác nhau (chủ yếu là 32-bit vs 64-bit).
    Mặc dù tôi chủ yếu có thể vượt qua điều này bằng cách sử dụng số nguyên có kích thước chính xác từ stdint, tôi vẫn muốn hiểu hành vi.
  2. Sự khác biệt về độ tin cậy giữa các hệ thống, không tăng tuần tự hóa thành một tiêu chuẩn cuối cùng (ví dụ: thứ tự mạng), và sau đó deserialize bằng cách sử dụng endianness của máy chủ?

Đó là một thư viện rất hay, nhưng tiếc là tài liệu về khả năng nhị phân của nó có phần hạn chế, vì vậy tôi chỉ muốn đảm bảo sử dụng nó theo cách này sẽ an toàn.

Trả lời

4

Không, nói chung, hãy tăng nhị phân tuần tự hóa không độc lập với máy. Xem here.

+1

Điều duy nhất tôi thấy liên quan đến tính di động là tuyên bố một trong các mục tiêu của chúng: "Dữ liệu di động - Luồng byte được tạo trên một nền tảng có thể đọc được trên bất kỳ nền tảng nào khác". –

+0

Ah. Khung ngớ ngẩn. Kiểm tra liên kết được cập nhật. Cuộn xuống khoảng 1/3. – rlbond

+0

Sợ tôi vẫn không nhìn thấy nó, bạn có thể trích dẫn một chuỗi tôi có thể ctrl-f trên? –

4

Đã có, tôi đã nghe nhiều về protobuf của Google. Nó có một C và C++ binding.

+0

Tôi chưa bao giờ sử dụng protobuf và không chắc chắn liệu nó có thể xử lý chính xác endianness hay không. Tôi đã làm một số tìm kiếm và tìm thấy điều này, trong đó nói rằng nó sẽ luôn luôn deserialize đến thứ tự byte của máy địa phương, vì vậy nó sẽ làm việc cho các mục đích của bạn: http://markmail.org/message/3ewnsvs4dwvwt647?q=thread:3ewnsvs4dwvwt647#query : thread% 3A3ewnsvs4dwvwt647 + trang: 1 + giữa: lv5yjf7qefizc2bv + trạng thái: kết quả –

1

Bạn nên xem Apache Thrift. Nó được thiết kế bởi Facebook để tuần tự hóa chéo/deserialization.

Các vấn đề liên quan