Code review завернул разбор float из пакета по указателю
Пакет от датчика: байт типа, затем 4 байта float в формате IEEE 754, порядок байтов совпадает с порядком МК. Разбор:
uint8_t buf[5]; /* buf[0] — тип, buf[1..4] — значение */
float t = *(float *)(buf + 1);
На текущей плате работает, но ревьюер требует переписать. Как правильно получить float?
- Скопировать 4 байта в float через memcpy
- Собрать uint32_t сдвигами и привести (float)
- Прочитать как *(double *)(buf + 1)
- Взять (float)buf[1] как первый байт числа
