【发布时间】: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