繁体   English   中英

从十六进制字符串转换为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 它有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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM