Я начинаю переносить собственный механизм сериализации в буферы протокола. Один тип данных, который будет использоваться особенно регулярно, - BigDecimal.Каков наилучший подход для сериализации BigDecimal/BigInteger к ProtocolBuffers
Кто-нибудь знает о хорошем способе сериализации этого в буферах протокола? Наша текущая процедура сериализации использует BigDecimal.toPlainString() для сериализации и новую BigDecimal (String) для десериализации - я предполагаю, что есть лучший способ.
Мое предположение состоит в определении BigDecimal как:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
Но я не слишком уверен, как определить BigInteger - возможно, используя свой метод toByteArray()?
Как бы вы преобразовали BigDecimal в BigInteger и масштаб? И назад ? – stikkos
Сначала я был обеспокоен тем, что этот подход использования '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