Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94
1

Преобразовать массив float чисел в массив типа byte и наоборот

12.06.2014, 15:39. Просмотров 1517. Ответов 3
Метки нет (Все метки)

Привет форумчанам

У меня такая задача. Через bluetooth нужно передавать числа float (или double). bluetooth при передаче использует массив байт. Так вот мне нужно сначала перевести число float в его байтовое представление (byte[]) , а затем массив принятых байт на другом устройстве преобразовать в числа (их произвольное количество). Идеи есть, но колхозить не хочется. Хотелось бы услышать идеи достаточно быстро работающего алгоритма.
float[] -> byte[] и byte[] -> float[]

Пример:
324.443, 323.12, 12.324, 5.32, -12.323 и т.д. -> byte[]

byte[] -> 324.443, 323.12, 12.324, 5.32, -12.323
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 15:39
Ответы с готовыми решениями:

Какими значениями инициализируется массив byte
Есть байтовый массив byte b = new byte; Чему будет равно b, b, b... ...

Старший (первый) бит переменной типа byte
Вопрос в следующем, как в переменной типа byte узнать значение первого бита (1...

Динамические массивы. Дан массив записей из полей типа Char, Word, Byte. Преобразовать его в массив типа Longint
FreePascal Выполнить обработку массивов в соответствии с заданием....

Вывести массив из 15 случайных чисел типа byte. Ввести целое число s.
Вывести массив из 15 случайных чисел типа byte. Ввести целое число s. Вставить...

Ввести случайным образом (используя функцию random) двумерный массив чисел типа byte
Ввести случайным образом (используя функцию random) двумерный массив чисел типа...

3
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
12.06.2014, 16:46 2
Цитата Сообщение от Igor-vrn Посмотреть сообщение
мне нужно сначала перевести число float в его байтовое представление (byte[]) , а затем массив принятых байт на другом устройстве преобразовать в числа (их произвольное количество)
Юзайте
Java
1
Float.floatToIntBits
и
Java
1
Float.intBitsToFloat
Вот небольшой пример конвертации флоата в масисв байт:
http://stackoverflow.com/questions/1...-read-by-c-app
Обратная конвертация тоже простая
0
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94
12.06.2014, 19:33  [ТС] 3
Цитата Сообщение от angryrobot Посмотреть сообщение
Float.intBitsToFloat
не совсем пойму в каком виде будут представлены биты в int. Беру из потока по 4 байта, дальше нужно как-то привести эти байты в один int, а затем воспользоваться методом выше. Как перевести?

При переводе в байтовую последовательность использовали побитовый сдвиг. Там понятно, но воспроизвести обратно не пойму как
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
13.06.2014, 22:46 4
Лучший ответ Сообщение было отмечено Igor-vrn как решение

Решение

Цитата Сообщение от Igor-vrn Посмотреть сообщение
Там понятно, но воспроизвести обратно не пойму как
Вот пожалуйста, две функции выполняющие преобразования. Все работает как надо:


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Test {
 
    public static void main(String[] args) {
        System.out.println(bytesToFloat(floatToBytes(1234.5F)));
    }
    
    static float bytesToFloat(byte[] b) { 
        int floatBits =  b[3] & 0xFF | 
                  (b[2] & 0xFF) << 8 | 
                  (b[1] & 0xFF) << 16 |  
                  (b[0] & 0xFF) << 24;
        return Float.intBitsToFloat(floatBits);
    }
    
    static byte[] floatToBytes(float f) {
        int floatBits = Float.floatToIntBits(f);
        byte floatBytes[] = new byte[4];
        floatBytes[0] = (byte)(floatBits >> 24);
        floatBytes[1] = (byte)(floatBits >> 16);
        floatBytes[2] = (byte)(floatBits >> 8);
        floatBytes[3] = (byte)(floatBits);
        return floatBytes; 
    }
 
}
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 22:46

Преобразовать массив LPWSTR в массив BYTE
Найти не могу нигде... На С# только нашел, и то не то... Получаю из...

Преобразовать сроку чисел CHAR в массив чисел типа int
Помогите реализовать идею... Прегнать введённую сроку чисел char в массив int...

Преобразовать string в массив byte[]
Привет. У меня есть строка к примеру &quot;test&quot; в ней 4 байта? Перевести ее в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru