Java Различные методы чтения 32-разрядных чисел с плавающей точкой из InputStream - PullRequest
1 голос
/ 15 марта 2020

У меня проблема с чтением 32-битных значений с плавающей запятой из InputStream, полученного из API.

Формат файла описан в документации API как:

ширина x высота x nbFrames 32-битные значения давления с плавающей запятой, сохраняемые кадр за кадром и в основной строке

В настоящее время я читаю значения с плавающей запятой, как это

 DataInputStream dis = new DataInputStream(is);

 while (dis.available() > 0) {

        byte[] float_val = new byte[4];
        dis.readFully(float_val);
        float f = ByteBuffer.wrap(float_val).order(ByteOrder.LITTLE_ENDIAN).getFloat();
        System.out.println(f);

   }

Поскольку ByteOrder не упоминается в документации, я предположил, что это будет Little Endian, так как я также тестировал Big Endian, но ценность, которую я получил, была слишком грязной, чтобы быть действительной. Однако, когда я показал значения с помощью Little Endian Byteorder, мой коллега, которому нужны значения из InputStream, указал, что значения, которые я получаю, «слишком малы» в смысле использования. Я спрашиваю, есть ли у вас, ребята, идея для другого подхода, читающего 32-битные значения с плавающей запятой в Java?

...