Tôi bắt đầu di chuyển một cơ chế tuần tự hóa tùy chỉnh sang Protocol Buffers là gì. Một kiểu dữ liệu sẽ được sử dụng đặc biệt thường xuyên là BigDecimal.Cách tiếp cận tốt nhất để tuần tự hóa BigDecimal/BigInteger thành ProtocolBuffers
Có ai biết cách tốt để tuần tự hóa điều này trong Bộ đệm giao thức không? Quá trình tuần tự hóa hiện tại của chúng ta sử dụng BigDecimal.toPlainString() để tuần tự hóa, và BigDecimal (String) mới cho deserialization - Tôi giả sử có một cách tốt hơn.
tôi đoán là để xác định một BigDecimal như:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
Nhưng tôi không quá chắc chắn làm thế nào để xác định BigInteger - có lẽ sử dụng phương pháp của nó toByteArray()?
Bạn sẽ chuyển đổi BigDecimal thành BigInteger và tỷ lệ như thế nào? Và quay lại ? – stikkos
Lúc đầu tôi lo ngại rằng cách tiếp cận này của việc sử dụng 'toByteArray' có thể không được di chuyển (không thể được deserialized có ý nghĩa từ các ngôn ngữ khác ngoài Java - thường là một trong những lý do chính để sử dụng protobuf ở nơi đầu tiên). Tuy nhiên, đặc tả cho ['BigInteger.toByteArray'] (http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#toByteArray()) khá cụ thể và dễ sử dụng từ các ngôn ngữ khác (ví dụ [.net BigInteger] (http://msdn.microsoft.com/en-us/library/dd268207 (v = vs.110) .aspx), mặc dù bạn phải cẩn thận vì endianness dường như là khác nhau). – bacar