【问题标题】:Casting hex number to signed integer将十六进制数转换为有符号整数
【发布时间】:2020-10-28 13:06:02
【问题描述】:

我一直在尝试将十六进制数转换为有符号整数。但它不能识别负数。

这是一个例子。我需要单独签署扩展而不是强制转换吗?

#include <iostream>

using namespace std;

int main()
{
    cout<<"Hello World";
    int64_t input = static_cast<int64_t>(0xf8546);
    
    cout << "Input: " << input << endl;

    return 0;
}

【问题讨论】:

  • 您的代码中没有负数。
  • 为什么你认为0xf8546是一个负的64位数字?
  • 是1开头的吧?
  • 0x1 也是以 1 开头 - 你认为它是负数吗?
  • 0xf8546 等价于0x00000000000f8546

标签: c++ typecasting-operator


【解决方案1】:

C++ 中没有否定字面量之类的东西。 0xf8546 是肯定的。其类型取决于您的平台。

如果你想要一个负的十六进制数,那么写

-0xf8546

这由应用于文字0xf8546 的一元否定运算符组成,就像-1 是文字1 的一元否定一样。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 2023-03-30
    • 2021-11-05
    • 2019-05-03
    相关资源
    最近更新 更多