我想在一个long int变量中存储两个32位值。
如何在使用C的32位操作系统上执行此操作?是否可以将数据存储在一个长long变量中?如果是这样,那怎么办?
答案 0 :(得分:8)
使用uint64_t和按位运算符。
uint64_t i64;
uint32_t a32, b32;
// Be carefull when shifting the a32.
// It must be converted to a 64 bit value or you will loose the bits
// during the shift.
i64 = ((uint64_t)a32 << 32) | b32;
答案 1 :(得分:0)
假设您的平台上有64位长,
int v1 = 123;
int v2 = 456;
long val = v1 << 32 | v2;
答案 2 :(得分:0)
除非sizeof(long int) == 8
,否则答案是否定的。如果这种平等是真的,那就用Kevin或者cnicutar的答案。