我知道我可以通过以下方式获得更高的int 64值:
int32 higher = (int32)(iGUID >> 32);
但我怎么设置它?
我试过这个,但它说“表达必须是一个可修改的值”:
iGUID << 32 = inewlGUID;
我需要保留其他值,(如果我设置较高的值,则应保留较低的值)。
答案 0 :(得分:2)
要更改高32位,同时保持较低的未经修改:
iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32);
答案 1 :(得分:0)
iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);
这将保留任何现有内容。
您还可以获取64位值的地址并将其转换为指向int32
的指针,然后可以对其进行下标和分配。但这通常不是 ,因为它会使您的代码依赖于平台的字节顺序。