Java原始长长的溢出



a c#系统正在使用pripitivetype =" uint64"(long)。

在Java中,当数据收到原始长时间时,它溢出了,在少数情况下导致–ve数。

如何处理这种情况?

您可以收到无符号的长时间为 long,为"长",因为一个人不会长时间计算。您甚至可以使用 Long.toUnsignedString(n) insted显示这么长时间。

否则将其存储在BigInteger中。理想地加载为8个Big-Endian字节。

// Some snippets, unordered, showing useful constructs.
long n = ...;
n = Long.reverseBytes();
byte[] bigendian = new byte[8];
ByteBuffer buf = ByteBuffer.wrap(bigendian); // .order(ByteOrder.LITTLE_ENDIAN);
buf.putLong(n);
// Creating a BigInteger from unsigned long's bytes, requiring big-endian order.
BigInteger num = new BigInteger(1, bigendian); // 1 = positive

相关内容

  • 没有找到相关文章

最新更新