Понимание байтового массива внутреннего представления двойников - PullRequest
0 голосов
/ 26 августа 2018

Здравствуйте, фрагмент кода ниже имеет следующий вывод.Я думал, что вывод по элементам был бы [56, 25, 0,0,0,0,0,0] или, возможно, [5,6,2,5,0,0,0,0].Я проверил с помощью сетевых утилит базового преобразования, и ни одно из представлений элементов байтового массива не является восьмеричным, шестнадцатеричным и т. Д. Может кто-нибудь объяснить, каково внутреннее представление элемента байтового массива в Java?(моя конечная цель - сохранить двойные значения в байтовом массиве).

d = 56.25

байтовый массив 'output' = [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);
...