如何设置int64的较低或较高值?

时间:2011-04-21 17:06:21

标签: c++ int64

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

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

但我怎么设置它?

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

iGUID << 32 = inewlGUID;

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

2 个答案:

答案 0 :(得分:2)

要更改高32位,同时保持较低的未经修改:

iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32);

答案 1 :(得分:0)

iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);

这将保留任何现有内容。

您还可以获取64位值的地址并将其转换为指向int32的指针,然后可以对其进行下标和分配。但这通常不是 ,因为它会使您的代码依赖于平台的字节顺序。