Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 14:19   #1
Lyubimov
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 53
По умолчанию Преобразование массива из байтов во fload

Имеется массив unsigned char

необходимо некоторые значения из него преобразовывать во float

пишу

float a;
unsigned char b[100];
...

a = *(float*)&b[10];

В "a" заносится что-то совсем не то.

Когда "вручную" переводишь нужные 4 байта из массива "b" во float всё правильно получается.

В чём ошибка и почему это может происходить?
Lyubimov вне форума Ответить с цитированием
Старый 28.03.2011, 14:23   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

А чем Вас не устраивает библиотечная функция atof ?
psycho-coder вне форума Ответить с цитированием
Старый 28.03.2011, 14:30   #3
Lyubimov
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 53
По умолчанию

Дело в том, что в массиве символов находится много данных в формате IEEE754

Пример:

float a[10];
unsigned char b[100];
...

b[10] = 0xBF;
b[11] = 0xF9;
b[12] = 0x80;
b[13] = 0xA0;
...

for (int i = 0; i < 10; i++) {
a[i] = *(float*)&b[10+i*sizeof(fload)];
}
...

должно получиться:

a[0] = -1,9492378
...

а получается что-то совсем не то, даже порядок не соблюдается

Последний раз редактировалось Lyubimov; 28.03.2011 в 17:49.
Lyubimov вне форума Ответить с цитированием
Старый 29.03.2011, 08:54   #4
Lyubimov
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 53
По умолчанию

Всё решилось, оказывается байты данных в обратном порядке шли
Lyubimov вне форума Ответить с цитированием
Старый 29.03.2011, 11:57   #5
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Lyubimov Посмотреть сообщение
Всё решилось, оказывается байты данных в обратном порядке шли
Не успел -)
Сам на днях сталкивался с подобной задачей.
Кстати, есть альтернативный вариант с использованием sstream.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 29.03.2011, 12:58   #6
Lyubimov
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
...
Кстати, есть альтернативный вариант с использованием sstream.
Интересно, а что он из себя представляет?
Lyubimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение массива байтов в файл niki2012 Общие вопросы Delphi 4 09.01.2011 03:45
Запись байтов из массива Ultr164 Общие вопросы Delphi 6 05.01.2011 16:26
Получение данных переменной ввиде массива байтов chertovich Общие вопросы Delphi 3 18.12.2010 21:51
преобразование массива PARTOS Microsoft Office Excel 4 20.01.2010 17:21
Данные из буфера обмена в виде массива байтов eda Microsoft Office Excel 10 12.08.2009 17:00