【发布时间】:2013-10-29 21:26:55
【问题描述】:
我需要解码编码为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 双精度值)直接转换为整数值。
【问题讨论】:
标签: c time floating-point ieee-754