C 16 進文字列から符号付き整数への変換
16 進文字列があり、それを符号付き 32 ビット整数に変換するとします。 C.たとえば、16 進文字列「ffffffe」の場合、バイナリ表現は 11111111111111101111111111111110 です。これは、符号付き整数 -65538 を表します。
変換手順:
これを実行するには変換std::stringstream を次のように効果的に利用します:
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
たとえば、次のコード スニペットは -65538 を生成します:
#include <sstream> #include <iostream> int main() { unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x; // Output as a signed type std::cout << static_cast<int>(x) << std::endl; }
C 11 文字列変換関数:
C 11 以降の場合、ユーティリティに番号を付ける新しい文字列このプロセスを簡素化します。 "stol" (文字列から Long) 関数と "stoul" (文字列から unsigned Long) 関数は、C の文字列変換機能の薄いラッパーを提供します。
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
追加の考慮事項:
Boost は、エラー チェック機能など、この変換に役立つ機能も提供していることに注意してください。
ただし、シンプルさと移植性を考慮して、ここで紹介する組み込みの stringstream または C 11 ユーティリティ関数を使用することをお勧めします。
以上がC の 16 進数文字列を符号付き整数に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。