Sto iniziando a migrare un meccanismo di serializzazione personalizzato su Protocol Buffers. Un tipo di dati che verrà utilizzato in modo particolarmente regolare è BigDecimal.Qual è l'approccio migliore per serializzare BigDecimal/BigInteger su ProtocolBuffers
Qualcuno sa di un buon modo di serializzare questo all'interno dei buffer di protocollo? La nostra routine di serializzazione corrente utilizza BigDecimal.toPlainString() per la serializzazione e il nuovo BigDecimal (String) per la deserializzazione. Presumo che esista un modo migliore.
La mia ipotesi è quello di definire un BigDecimal come:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
Ma io non sono troppo sicuro di come definire BigInteger - magari utilizzando il suo metodo toByteArray()?
Come convertire un BigDecimal in un BigInteger e ridimensionarlo? E ritorno ? – stikkos
Inizialmente ero preoccupato che questo approccio all'uso di 'toByteArray' non potesse essere portabile (non può essere deserializzato in modo significativo da lingue diverse da Java - spesso uno dei motivi principali per usare protobuf in primo luogo). Tuttavia, la specifica per ['BigInteger.toByteArray'] (http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#toByteArray()) è abbastanza specifica e facilmente utilizzabile da altri linguaggi (ad esempio [.net BigInteger] (http://msdn.microsoft.com/en-us/library/dd268207 (v = vs.110) .aspx), anche se devi stare attento dato che l'endianità sembra essere diverso). – bacar