私はint64のより高い値を次のように取得できることを知っています:
int32 higher = (int32)(iGUID >> 32);
しかし、どうすれば設定できますか?
これで試してみましたが、「式は変更可能な値でなければなりません」と表示されます。
iGUID << 32 = inewlGUID;
他の値を保持する必要があります(高い値を設定すると、低い値を保持する必要があります)。
下位32ビットを変更せずに、上位32ビットを変更するには:
iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32);
iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);
これにより、既存のコンテンツが保持されます。
また、64ビット値のアドレスを取得して、へのポインタにキャストすることもint32
できます。このポインタに、添え字を付けて割り当てることができます。ただし、これはコードをプラットフォームのバイト順序に依存させるため、通常はお勧めしません。