我開始將自定義序列化機制遷移到Protocol Buffers。一種特別經常使用的數據類型是BigDecimal。什麼是將BigDecimal/BigInteger序列化爲ProtocolBuffers的最佳方法
有誰知道在Protocol Buffers中序列化這個好方法嗎?我們當前的序列化例程使用BigDecimal.toPlainString()進行序列化,並使用新的BigDecimal(String)進行反序列化 - 我假設有更好的方法。
我的猜測是定義一個BigDecimal爲:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
但我也不太清楚如何定義的BigInteger - 也許使用它的toByteArray()方法?
如何將BigDecimal轉換爲BigInteger並進行縮放?然後回來 ? – stikkos 2012-11-18 16:18:40
我首先擔心的是,這種使用`toByteArray`的方法可能不是可移植的(不能從Java以外的語言進行有意義的反序列化 - 這通常是首先使用protobuf的主要原因之一)。但是,[`BigInteger.toByteArray`](http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#toByteArray())的規範是非常具體且易於使用的其他語言(例如[.net BigInteger](http://msdn.microsoft.com/en-us/library/dd268207(v = vs.110).aspx)),但您必須小心,因爲字節序似乎是不同)。 – bacar 2014-03-11 12:14:49