將十六進位字串轉換為C 中的有符號整數
許多情況需要將十六進位字串轉換為C 中的有符號整數。例如,您可能有一個像“fffefffe”這樣的十六進位字串,表示二進位值 11111111111111101111111111111110,對應於有符號整數 -65538。
使用 std::stringstream 的解
一種實作方法此轉換涉及使用std::stringstream:
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
非負數
要處理非負數,您可以使用以下範例:
#include <sstream> #include <iostream> int main() { unsigned int x; std::stringstream ss; ss << std::hex << "0000000A"; ss >> x; std::cout << static_cast<int>(x) << std::endl; }
這將產生10作為結果,這對於十六進位字串是正確的"0000000A".
C 11 字串轉數字函數
在C 11 中,您可以使用字串轉數字函數,例如std::stoul:
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
其他方法
或者,您可以利用Boost 等庫,它提供lexical_cast 等功能:
unsigned int x = boost::lexical_cast<int>("0x0badc0de");
滾動您自己的lexical_cast
如果您喜歡沒有依賴關係的更簡單的方法,您可以使用自訂實作lexical_cast:
template<typename T2, typename T1> inline T2 lexical_cast(const T1 &in) { T2 out; std::stringstream ss; ss << in; ss >> out; return out; } unsigned int x = lexical_cast<unsigned int>("0xdeadbeef");
以上是如何在 C 中將十六進位字串轉換為有符號整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!