Могу ли я привести указатель на тип double as char *
, затем использовать этот указатель, чтобы разбить двойное значение на байты?
Вот пример кода:
double data;
double *dblPoint = &data;
unsigned char *bytePoint = (unsigned char *)dblPoint;
unsigned char byteArray[sizeof (double)];
unsigned int i;
for(i = 0; i < sizeof(double); i++) {
byteArray[i] = *(bytePoint + i);
}
byteArray
затем передается через UART на другой компьютер и восстанавливается ( bytesReceived
содержит входящие data):
unsigned char bytesReceived[sizeof (double)];
double reconstData;
double *newDblPoint;
unsigned int i;
newDblPoint = bytesReceived;
reconstData = *dblPoint;
Итак, после всего этого data == reconstData
?