- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我开始将自定义序列化机制迁移到 Protocol Buffer 。一种特别经常使用的数据类型是 BigDecimal
。
有谁知道在 Protocol Buffer 中序列化它的好方法吗?我们当前的序列化例程使用 BigDecimal.toPlainString()
进行序列化,使用 new BigDecimal(String)
进行反序列化 - 我假设有更好的方法。
我的猜测是将 BigDecimal
定义为:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
但我不太确定如何定义 BigInteger
- 也许使用它的 toByteArray()
方法?
最佳答案
是的。您应该将 BigInteger 定义为 BigInteger.toByteArray() 。
我的猜测是 BigDecimal 会是:
message BDecimal {
required int32 scale = 1;
required BInteger int_val = 2;
}
而 BigInteger 可以定义为
message BInteger {
required bytes value = 1;
}
处理 BigInteger 的代码是:
BInteger write(BigInteger val) {
BInteger.Builder builder = BInteger.newBuilder();
ByteString bytes = ByteString.copyFrom(val.toByteArray());
builder.setValue(bytes);
return builder.build();
}
BigInteger read(BInteger message) {
ByteString bytes = message.getValue();
return new BigInteger(bytes.toByteArray());
}
关于java - 将 BigDecimal/BigInteger 序列化为 ProtocolBuffers 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051732/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!