如何使用联合将 double 逐位转换为 64 位整数

How to turn a double to a 64-bit integer bit by bit using unions

我想将 double 的所有位存储在 C 中的 64 位整数中。

即最重要的位应该是符号,之后是指数,然后是分数。

我想使用联合。

最安全的方法是使用 memcpy.

double x = 123.456;
uint64_t y;
memcpy(&y, &x, sizeof y);

如果您没有 memcpy 可以使用,您可以使用 union:

union {
    double d;
    uint64_t i;
} u;

double x = 123.456;
uint64_t y;

u.d = x;
y = u.i;