0
通过使用std :: hex和std :: dec,可以从字符串中解析出十六进制数并将其转换为C++中的十进制数。但是,如果十六进制数字被签名呢?在C++中将十六进制十六进制字符标记为十进制
例如下面的代码将生成241,如果输入“F1”为十六进制无符号,则结果为正确,但如果输入为带符号的十六进制,则结果应为-15。有没有可以处理带符号十六进制值的C++函数?
通过使用std :: hex和std :: dec,可以从字符串中解析出十六进制数并将其转换为C++中的十进制数。但是,如果十六进制数字被签名呢?在C++中将十六进制十六进制字符标记为十进制
例如下面的代码将生成241,如果输入“F1”为十六进制无符号,则结果为正确,但如果输入为带符号的十六进制,则结果应为-15。有没有可以处理带符号十六进制值的C++函数?
当你说“签署十六进制”你的意思是,如果你是代表十六进制char
的按位表示,则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;
查找['标准:: strtol'(HTTP://en.cppreference。 com/w/cpp/string/byte/strtol)和['std :: stoi'](http://en.cppreference.com/w/cpp/string/basic_string/stol)。 –