Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道我可以通过以下方式获得更高的 int 64 值:
int32 higher = (int32)(iGUID >> 32);
但是我该如何设置呢?
我试过这个,但它说“表达式必须是一个可修改的值”:
iGUID << 32 = inewlGUID;
我需要保留其他值,(如果我设置较高的值,则应保留较低的值)。
要更改高 32 位,同时保持低位不变:
iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32);
iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);
这将保留任何现有内容。
您还可以获取 64 位值的地址并将其转换为指向 的指针int32,然后可以对其进行下标和分配。但是,通常不建议这样做,因为它会使您的代码依赖于平台的字节顺序。
int32