如何使用联合将 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;
我想将 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;