我有一个像这样的值:
int64_t s_val = SOME_SIGNED_VALUE;
我如何获得
uint64_t u_val
与
s_val
完全相同的位模式,但被视为未签名?这可能真的很简单,但是在查看了Stackoverflow和其他地方之后,我还没有找到答案。
最佳答案
int64_t s_val = SOME_SIGNED_VALUE;
uint64_t u_val = static_cast<uint64_t>(s_val);
C++标准4.7/2指出:
另一方面,Standard说“由
reinterpret_cast
执行的映射是实现定义的。[注意:它可能会或可能不会产生与原始值不同的表示。]”(5.2.10/3)。因此,我建议使用static_cast
。