사용자 지정 직렬화 메커니즘을 프로토콜 버퍼로 마이그레이션하기 시작했습니다. 특히 자주 사용되는 하나의 데이터 유형은 BigDecimal입니다.BigDecimal/BigInteger를 ProtocolBuffers로 serialize하는 최상의 방법은 무엇입니까
누군가 프로토콜 버퍼 내에서 이것을 직렬화하는 좋은 방법을 알고 있습니까? 현재의 직렬화 루틴은 직렬화에 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