2

私はint64のより高い値を次のように取得できることを知っています:

int32 higher = (int32)(iGUID >> 32);

しかし、どうすれば設定できますか?

これで試してみましたが、「式は変更可能な値でなければなりません」と表示されます。

iGUID << 32 = inewlGUID;

他の値を保持する必要があります(高い値を設定すると、低い値を保持する必要があります)。

4

2 に答える 2

3

下位32ビットを変更せずに、上位32ビットを変更するには:

iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32);
于 2011-04-21T17:09:43.033 に答える
0
iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);

これにより、既存のコンテンツが保持されます。

また、64ビット値のアドレスを取得して、へのポインタにキャストすることもint32できます。このポインタに、添え字を付けて割り当てることができます。ただし、これはコードをプラットフォームのバイト順序に依存させるため、通常はお勧めしません。

于 2011-04-21T17:09:48.027 に答える