了解双精度的字节数组内部表示

时间:2018-08-26 16:40:37

标签: arrays double byte representation

您好,下面的代码段具有以下输出。我以为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);

0 个答案:

没有答案