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)。 –