Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中从十六进制到十进制的有符号转换+; 使用STD::HEX和STD::DEC,可以从字符串中解析十六进制,并将其转换成C++中的十进制数。但是如果十六进制数是有符号的呢_C++_Signed_Hex - Fatal编程技术网

C+中从十六进制到十进制的有符号转换+; 使用STD::HEX和STD::DEC,可以从字符串中解析十六进制,并将其转换成C++中的十进制数。但是如果十六进制数是有符号的呢

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

例如,下面的代码将产生241,如果输入“F1”是无符号十六进制,则结果是正确的,但如果输入是有符号十六进制,则结果应为-15。是否有C++函数可以处理签名十六进制值?< /p>
 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::无法向上和向下查找。