C で 16 進文字列を符号付き整数に変換する
多くの状況で、C で 16 進文字列を符号付き整数に変換する必要があります。たとえば、バイナリ値 11111111111111101111111111111110 を表す「ffffffe」のような 16 進文字列があり、これは符号付き整数 -65538 に対応します。
std::stringstream
この変換を実現する 1 つのアプローチには、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 を生成します。これは 16 進文字列 "0000000A" としては正しいものです。
C 11 文字列から数値への関数
C 11 では、次のような文字列を数値に変換する関数を利用できます。 std::stoul:std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
その他のアプローチ
あるいは、lexical_cast:< のような関数を提供する Boost などのライブラリを利用することもできます。 🎜>unsigned int x = boost::lexical_cast<int>("0x0badc0de");自分でロールするlexical_cast
依存関係のない、より単純なアプローチを希望する場合は、lexical_cast のカスタム実装を使用できます:
以上がC で 16 進数文字列を符号付き整数に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。