4

2 つの 32 ビット値を 1 つの long int 変数に格納したいと考えています。

Cを使用して32ビットOSでこれを行うにはどうすればよいですか? データを単一の 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

でない限りsizeof(long int) == 8、答えはノーです。その等式が真である場合は、Kevin または cnicutar の回答を使用してください。

于 2011-08-11T14:22:32.950 に答える
0

プラットフォームで long が 64 ビットであると仮定すると、

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