簡體   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