您好,下面的代码段具有以下输出。我以为by元素的输出应该是[56,25,0,0,0,0,0,0]或也许是[5,6,2,5,0,0,0,0]。我已经使用在线基本转换实用程序进行了检查,并且字节数组元素的表示形式都不是八进制,十六进制等。有人可以解释一下Java中字节数组元素的内部表示形式是什么吗? (我的最终目标是将双精度值存储在字节数组中。)
d = 56.25
字节数组'输出'= [64、76、32、0、0、0、0、0]
返回十进制= 56.25
double d = 56.25;
System.out.println("d= "+d);
byte[] output = new byte[8];
Long lng = Double.doubleToLongBits(d);
for (int i = 0; i < 8; i++) {
output[i] = (byte)((lng >> ((7 - i) * 8)) & 0xff);
}
System.out.print("\n\n");
System.out.println("byte array 'output'= "+Arrays.toString(output));
double val = ByteBuffer.wrap(output).order(ByteOrder.BIG_ENDIAN).getDouble();
System.out.print("\n\n");
System.out.println("back to decimal= "+val);