【问题标题】:How to set the lower or higher Value of a int64?如何设置 int64 的较低或较高值?
【发布时间】:2011-04-21 17:06:20
【问题描述】:

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

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

但是我该如何设置呢?

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

iGUID << 32 = inewlGUID;

我需要保留另一个值,(如果我设置了较高的值,则应该保留较低的值)。

【问题讨论】:

    标签: c++ int64


    【解决方案1】:

    更改高 32 位,同时保持低位不变:

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

    【讨论】:

    • 'iGUID & 0xFFFFFFFF' 将所有高位部分归零。对吗?
    【解决方案2】:
    iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff);
    

    这将保留所有现有内容。

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

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      相关资源
      最近更新 更多