2 つの 32 ビット値を 1 つの long int 変数に格納したいと考えています。
Cを使用して32ビットOSでこれを行うにはどうすればよいですか? データを単一の long long 変数に格納することは可能ですか? もしそうなら、それはどのように行われますか?
2 つの 32 ビット値を 1 つの long int 変数に格納したいと考えています。
Cを使用して32ビットOSでこれを行うにはどうすればよいですか? データを単一の long long 変数に格納することは可能ですか? もしそうなら、それはどのように行われますか?
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;
でない限りsizeof(long int) == 8
、答えはノーです。その等式が真である場合は、Kevin または cnicutar の回答を使用してください。
プラットフォームで long が 64 ビットであると仮定すると、
int v1 = 123;
int v2 = 456;
long val = v1 << 32 | v2;