我需要解码编码为IEEE double
(来自 iOS NSTimeInterval
)的时间戳并存储在一个 8 字节数组中,以便我可以使用ctime
以人类可读格式打印出时间戳。这在大多数系统上都是微不足道的,但在我的系统上却不是。
Example: on iOS side
uint8_t data[8];
double x = 3.14;
memcpy(data,&x,8);
我在 MSP430F5438A 上运行,我需要使用 COFF ABI 与第 3 部分库链接。如果您使用 COFF ABI,TI 的Code Composer 不支持 64 位浮点类型(IEEE double)。它double
与float
(即单精度)相同。
这些都行不通。
uint8_t data[8];
double x;
memcpy(&x,data,8);
或者
x = *(double*)data;
或者
union {
uint8_t data[8];
double d;
} x;
memcpy(x.data,data,8);
我只是胡言乱语,因为double
使用 Code Composer 只有 4 个字节。我需要一种将uint8_t[8]
数据(这是一个合法的 IEEE 双精度值)直接转换为整数值的方法。