C++ 将十六进制数强制转换为有符号整数

C++ 将十六进制数强制转换为有符号整数,c++,typecasting-operator,C++,Typecasting Operator,我一直在尝试将十六进制数转换为有符号整数。但它不能识别负数 这里有一个例子。我是否需要单独签名而不是铸造 #include <iostream> using namespace std; int main() { cout<<"Hello World"; int64_t input = static_cast<int64_t>(0xf8546); cout << "Input: &

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

这里有一个例子。我是否需要单独签名而不是铸造

#include <iostream>

using namespace std;

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

    return 0;
}
#包括
使用名称空间std;
int main()
{

CUT< P> C++中没有负文本,<代码> 0xF8566 < /代码>是正的。它的类型取决于平台。< /P> 如果你想要一个负的十六进制数,那么写

-0xf8546

这包括应用于文字
0xf8546
的一元求反运算符,就像
-1
是文字
1
的一元求反一样,您的代码中没有负数。为什么您认为
0xf8546
是负的64位数字?它是从1开始的?0x1
也是星形的用一个1-你认为它是负数吗?
0xf8546
相当于
0x00000000000f8546