| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Копирование массива в структуру |
| Автор: Severyanin 18.12.2008, 05:10 |
| Добрый день. Я принимаю с прибора массив типа unsigned char, в который прибор записывает такую же структуру. Мне необходимо получить ту же структуру из этого массива. Явное копирование с помощью memset результата не дает. Вернее, часть информации записывается правильно, а переменные типа float получают дикие значения типа 1,56Е-44. Подскажите, пожалуйста, каким образом правильно скопировать данный массив в структуру |
| Автор: Severyanin 18.12.2008, 08:56 | ||
делаю я пока так: есть массив
|
| Автор: Lazin 18.12.2008, 09:43 | ||
только нужно учитывать выравнивание |
| Автор: Severyanin 18.12.2008, 09:56 |
| Вот с этим и есть основные фокусы. при любом выравнивании, которое я менял по совету dumb с помощью pragma pack, получаются в итоге неверные результаты для типов с плавающей точкой, то есть, значения типа 3,5E-38 и так далее. Вот я и стал спрашивать, есть ли альтернативный вариант |
| Автор: mrbrooks 18.12.2008, 10:30 |
| Severyanin, а ты уверен что буфер из unsigned char даст верный float. Обычно аналоговые значения передаются signed char. |
| Автор: Lazin 18.12.2008, 10:33 | ||||
можешь вручную распаковывать
возможно формат чисел типа float у прибора отличается от PC-шного |
| Автор: Rififi 18.12.2008, 11:05 |
| проверить что прибор выдает числа с плавающей точкой совместимые со стандартом IEEE 754, а не какую-то свою кривизну |
| Автор: UnrealMan 19.12.2008, 02:30 | ||
Использовать memcpy вместо memset |
| Автор: Severyanin 24.12.2008, 05:35 |
| Всем спасибо, проблема решена +1 за советы)))) |