4

我想将两个 32 位值存储在一个 long int 变量中。

您将如何在使用 C 的 32 位操作系统上执行此操作?是否可以将数据存储在单个 long long 变量中?如果是这样,那是怎么做的?

4

3 回答 3

10

使用 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;
于 2011-08-11T14:19:19.077 回答
0

假设在您的平台上 long 是 64 位,

int v1 = 123;
int v2 = 456;
long val = v1 << 32 | v2;
于 2011-08-11T14:19:31.817 回答
0

除非sizeof(long int) == 8,答案是否定的。如果该等式成立,则使用 Kevin 或 cnicutar 的答案。

于 2011-08-11T14:22:32.950 回答