Как происходить (castear, “выравнивать”) часть буфера данных в плавающую переменную?

хороший день.

У меня есть переменная для широты, которую я храню в буфере типа uint64_t, и он наполняется серийным способом

    volatile uint64_t Latitude =    (((uint64_t)BufferTmp[22]<<56)|
                ((uint64_t)BufferTmp[21]<<48)|
                ((uint64_t)BufferTmp[20]<<40)|
                ((uint64_t)BufferTmp[19]<<32)|
                ((uint64_t)BufferTmp[18]<<24)|
                ((uint64_t)BufferTmp[17]<<16)|
                ((uint64_t)BufferTmp[16]<<8)|
                (uint64_t)BufferTmp[15]);

Чтобы показывать ее, только я располагаю 32 битами, а следовательно я предпочел реализовывать casteo в тип float. Я протестировал различные типы casteo, но ни один не предлагает мне результат, который я желаю, какие-то даже ни показывают стоимость. Я реализовал копию переменной и в конце концов parseo в 4 байт и я показываю ее.

memcpy((u08 *)&data, (u08 *)&Latitude, sizeof(data));
INFO_GPS.Latitude.total= (s32)(data);

Также я попытался с формулой mantissa, выразителя и знака, но он не бросает мне результаты. Кто-то знает, что могло бы делать? Или каков правильный способ перемещать эту переменную?

Esta imagen proviene de la hoja de datos del producto que me arroja la latitud

** Обновление: ** я объявил типичную структуру, чтобы осуществлять стандарт IEEE754, с 3 различным распределением для double. Однако данные остаются, не появляясь правильно.

6
задан 21.08.2019, 17:06
0 ответов