gpt4 book ai didi

java - 将大字节数组转换为 double 变量中的自然数组

转载 作者:行者123 更新时间:2023-11-30 01:43:07 27 4
gpt4 key购买 nike

我有一个大小为 8(64 位)的字节数组序列。我想将相应的自然数放入一个变量(原始类型)中,因此我想使用 double 变量,因为其他原始类型不支持如此高的范围(从0到2^64)。

我举一个例子:

我有以下字节数组

000000 0000000 0000000 0000000 0000000 0000000 0000000 0000010

对应的自然数是2。

我已经尝试过这个:

double bigNaturalNum = new BigInteger(byteArray).doubleValue();

问题是 doubleValue() 方法返回字节表示的 double 值,因此结果值可能是十进制值。

最佳答案

这取决于byte[]中的最高有效位是否用作符号位,例如two's complement 。如果是这样,您可以使用 ByteBufferbyte[] 映射到 long:

byte[] arr = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff };
long l = ByteBuffer.wrap(arr).getLong();
System.out.println(l); // -1
System.out.println(Long.toHexString(l)); // ffffffffffffffff

如果不是,您应该使用 BigIntegersignum=1 来指示您不使用符号位:

byte[] arr = new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff };
BigInteger i = new BigInteger(1, arr);
System.out.println(i); // 18446744073709551615

关于java - 将大字节数组转换为 double 变量中的自然数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com