2010-02-20 6 views
5

Bir metin biçimine serileştirmek için seri hale getirme serisini kullanabileceğinizi ve daha sonra bir soketin üzerinden geçebileceğinizi biliyorum, ancak bir istatistik verileri sınıfını ikili bir formata serileştirmek istiyorum (hem boyut hem de kodlama/kod çözme için genel nedenler) . Bunun için boost serileştirme kullanmak güvenli midir?C++'daki nesnelere bir soket üzerinden kullanmak üzere ikili bir formata serileştirmek için boost serileştirme kullanmak güvenli midir?

Benim belirli endişeler: farklı platformlarda tamsayı türü boyutları arasında

  1. farklar (esas olarak 32 bit vs. 64 bit).
    Stdint'ten tam boyutlu tamsayıyı kullanarak bunu büyük ölçüde çözebilirim, yine de davranışı anlamak isterim.
  2. Sistemler arasındaki bitişikliklerdeki farklar, standart bir endensite (örneğin: ağ siparişi) serileştirilir ve daha sonra ev sahibinin endianitesini kullanarak seri hale getirilir mi?

Bu çok güzel bir kütüphanedir, ancak maalesef ikili kapasiteleriyle ilgili belgeler biraz sınırlıdır, bu yüzden sadece bu şekilde kullanılmasının güvenli olacağından emin olmak istiyorum.

cevap

4

Hayır, genel artırımı ikili seri makinadan bağımsız değildir. Bakınız here.

+1

Taşınabilirlikle ilgili görebildiğim tek şey, hedeflerinden birinin bu ifadesidir: "Veri Taşınabilirliği - Tek bir platformda oluşturulan bayt akışları, herhangi bir diğerinde okunabilir olmalıdır." –

+0

Ah. Aptal çerçeveler. Güncellenen linki kontrol edin. 1/3 aşağı doğru kaydırın. – rlbond

+0

Fraid Hala göremiyorum, ctrl-f üzerinde bir dize alıntı yapabilir misiniz? –

4

Şu anda Google'ın protobuf'u hakkında çok şey duyuyorum. Bir C ve C++ binding vardır.

+0

Hiç protobuf kullanmadım ve endianitenin doğru bir şekilde ele alınacağından emin değildim. Bazı aramaları yaptım ve bunu yerel makinenin yerel bayt sırasına göre her zaman seri hale getireceğini belirttim, bu yüzden sizin amaçlarınız için çalışmalıdır: http://markmail.org/message/3ewnsvs4dwvwt647?q=thread:3ewnsvs4dwvwt647#query : iplik% 3A3ewnsvs4dwvwt647 + sayfa: 1 + orta: lv5yjf7qefizc2bv + devlet: sonuçlar –

1

Apache Thrift'a bakmalısınız. Çapraz platform serileştirme/serileştirme için Facebook tarafından tasarlandı.