从十六进制字符串转换为 int 时出现 C++ 错误
c++ error when converting from hex string to int
我正在编写一个接受十六进制值文本文件的程序。我将这些十六进制值存储在 vector<string>
中,然后使用 stol
将十六进制字符串转换为整数,然后将其存储在新的 vector<int>
.
中
vector<string> flir_times;
vector<int> flir_dec;
for(int i = 0; i < flir_times.size() ; i++){
int x = stol(flir_times[i], nullptr, 16);
flir_dec.push_back(x);
cout << flir_dec[i] << endl;
}
该程序原本可以运行;但今天由于某种原因它似乎没有正确转换一些新的十六进制值。以下是需要转换的十六进制值的一小段:
这些是程序应该将它们转换成的值:
然而,当我 运行 我的程序将十六进制值转换为大的负数时,它会崩溃。有谁知道是什么导致程序无法正确转换十六进制数字然后崩溃?
您的程序继续正常运行,只是您尝试读取的添加的十六进制数是负 32 位整数的表示。例如,A4B844A2
的最高有效字节是 10100100
。它在最重要的"sign"位中有1
,所以这个数字实际上是负数。
切换到无符号数,并使用std::stoul
解析输入以解决此问题:
vector<string> flir_times;
vector<unsigned> flir_dec;
for(int i = 0; i < flir_times.size() ; i++){
unsigned x = stoul(flir_times[i], nullptr, 16);
flir_dec.push_back(x);
cout << flir_dec[i] << endl;
}
我正在编写一个接受十六进制值文本文件的程序。我将这些十六进制值存储在 vector<string>
中,然后使用 stol
将十六进制字符串转换为整数,然后将其存储在新的 vector<int>
.
vector<string> flir_times;
vector<int> flir_dec;
for(int i = 0; i < flir_times.size() ; i++){
int x = stol(flir_times[i], nullptr, 16);
flir_dec.push_back(x);
cout << flir_dec[i] << endl;
}
该程序原本可以运行;但今天由于某种原因它似乎没有正确转换一些新的十六进制值。以下是需要转换的十六进制值的一小段:
这些是程序应该将它们转换成的值:
然而,当我 运行 我的程序将十六进制值转换为大的负数时,它会崩溃。有谁知道是什么导致程序无法正确转换十六进制数字然后崩溃?
您的程序继续正常运行,只是您尝试读取的添加的十六进制数是负 32 位整数的表示。例如,A4B844A2
的最高有效字节是 10100100
。它在最重要的"sign"位中有1
,所以这个数字实际上是负数。
切换到无符号数,并使用std::stoul
解析输入以解决此问题:
vector<string> flir_times;
vector<unsigned> flir_dec;
for(int i = 0; i < flir_times.size() ; i++){
unsigned x = stoul(flir_times[i], nullptr, 16);
flir_dec.push_back(x);
cout << flir_dec[i] << endl;
}