У меня есть обработчик, где поступают 4 байта и они превращаются в int, но эта схема не работает с float, потому что нет по битового сдвига. Помогите изменить код. Надо 4 байта превратить во float
int int32 = 0;
int[] bytes = new int[4];
for (int i = 0; i < bytes.length; i++)
bytes[i] = stream.get();
for (int i = bytes.length - 1; i >= 0; i--)
int32 = (int32 << 8) | bytes[i];
Превратить массив байтов во float
можно с помощью ByteBuffer:
byte[] data = { 10, 10, 10, 10 };
float f = ByteBuffer.wrap(data).getFloat();
Если вместо big-endian порядка байтов нужен little-endian, то это нужно явно указать:
float f = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN).getFloat();
Если требуется задать битовое представление для float, то это можно сделать на основе int
с помощью Float.intBitsToFloat
:
float value = Float.intBitsToFloat(int32);
Рекомендую предварительно уточнить, в каком порядке идут байты в исходном потоке.
Аналогичный вопрос на английском: How to convert 4 bytes array to float in java
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
увидел такую возможность в es проводнике settings/display/usb plug-in message
Всем доброго времени суток! Имеется RecyclerView, элементы которого могут выходить за пределы экранаКаждый элемент представляет из себя View с корневым...
Получил тестовое задание написать парсер для интернет магазина, чтобы через поле поиска задать интересующий товар и на выходе получить xml файл...