Jac*_*ack 37
包:
u32 x, y;
u64 v = ((u64)x) << 32 | y;
Run Code Online (Sandbox Code Playgroud)
解压:
x = (u32)((v & 0xFFFFFFFF00000000LL) >> 32);
y = (u32)(v & 0xFFFFFFFFLL);
Run Code Online (Sandbox Code Playgroud)
lhf*_*lhf 10
或者,如果您对两个32位数字的含义不感兴趣:
u32 x[2];
u64 z;
memcpy(x,&z,sizeof(z));
memcpy(&z,x,sizeof(z));
Run Code Online (Sandbox Code Playgroud)
使用联合并摆脱位操作:
<stdint.h> // for int32_t, int64_t
union {
int64_t big;
struct {
int32_t x;
int32_t y;
};
};
assert(&y == &x + sizeof(x));
Run Code Online (Sandbox Code Playgroud)
就那么简单.big由x和y组成.