хороший день.
У меня есть переменная для широты, которую я храню в буфере типа 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, выразителя и знака, но он не бросает мне результаты. Кто-то знает, что могло бы делать? Или каков правильный способ перемещать эту переменную?
** Обновление: ** я объявил типичную структуру, чтобы осуществлять стандарт IEEE754, с 3 различным распределением для double. Однако данные остаются, не появляясь правильно.