2

我知道我可以通过以下方式获得更高的 int 64 值:

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

但是我该如何设置呢?

我试过这个,但它说“表达式必须是一个可修改的值”:

iGUID << 32 = inewlGUID;

我需要保留其他值,(如果我设置较高的值,则应保留较低的值)。

4

2 回答 2

3

要更改高 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 回答