C+中从十六进制到十进制的有符号转换+; 使用STD::HEX和STD::DEC,可以从字符串中解析十六进制,并将其转换成C++中的十进制数。但是如果十六进制数是有符号的呢
例如,下面的代码将产生241,如果输入“F1”是无符号十六进制,则结果是正确的,但如果输入是有符号十六进制,则结果应为-15。是否有C++函数可以处理签名十六进制值?< /p>C+中从十六进制到十进制的有符号转换+; 使用STD::HEX和STD::DEC,可以从字符串中解析十六进制,并将其转换成C++中的十进制数。但是如果十六进制数是有符号的呢,c++,signed,hex,C++,Signed,Hex,例如,下面的代码将产生241,如果输入“F1”是无符号十六进制,则结果是正确的,但如果输入是有符号十六进制,则结果应为-15。是否有C++函数可以处理签名十六进制值?< /p> int n; stringstream("F1") >> std::hex >> n; std::cout << std::dec << "Parsing \"F1\" as hex gives " << n << '\n'; intn; s
int n;
stringstream("F1") >> std::hex >> n;
std::cout << std::dec << "Parsing \"F1\" as hex gives " << n << '\n';
intn;
stringstream(“F1”)>>std::hex>>n;
std::cout当你说“有符号十六进制”时,你的意思是如果你用十六进制表示字符的位表示,那么F1
将是-15
。然而,有符号十六进制中的-15
只是-F
如果要从该位表示中获取-15
,必须执行以下操作:
std::string szTest = "F1";
unsigned char chTest = std::stoi( szTest, nullptr, 16 );
char chTest2 = *reinterpret_cast<char*>(&chTest);
std::cout << szTest << ": " << static_cast<int>(chTest2) << std::endl;
return 0;
std::string szTest=“F1”;
无符号字符chTest=std::stoi(szTest,nullptr,16);
char chTest2=*重新解释铸件(&chTest);
std::无法向上和向下查找。