Добрые люди, подскажите, пожалуйста!
Есть array uint16_t данных. В него кладутся данные (4 байта) в формате IEEE-754 - floting point. Я пытаюсь эти данные прочитать нехитрым способом, настроив float указатель на начало массива и проведя разыменование. Но вместо числа 511.3 получаю -0.0. Что я упускаю из вида? Где ошибка?
PS: если я уйду от uint16_t в пользу, скажем, unsigned long, то код заработает. но uint16_t array - “must have” Может array в памяти как-то особенно размещается?
0x43ffa666 соответствует float 511.3
void setup() {
Serial.begin(9600);
}
void loop() {
uint16_t au16data[] = { 0x43ff, 0xa666};
float* p_float = (float*)(au16data);
Serial.println(*p_float) ;
Serial.flush();
exit(1000);
}
в аутпуте соответственно:
-0.00
Arduino Nano.