我需要在int32_t缓冲区中放入一个64位的double。这个代码适用于32位的浮点数,但是当我使用双精度时它不会。我认为双重需要分成两部分并存储到缓冲区两次......但是如何?
int32_t *buffer = packet->packet_buffer;
memcpy(&buffer[pos++], &data, sizeof(data));
答案 0 :(得分:0)
这样做的方式(或者至少对我而言)是:
typedef union
{
uint32_t split[2];
double data;
} double_split;
int32_t *buffer = packet->packet_buffer;
double_split ds = {0};
ds.data = data;
memcpy(&buffer[pos++], &ds.split[0], sizeof(data));
memcpy(&buffer[pos++], &ds.split[1], sizeof(data));