この投稿では、C++で16進文字列を整数に変換する方法について説明します。

1.文字列ストリームの使用

いつ basefield フォーマットフラグはに設定されます hex 文字列ストリームの場合、ストリームに挿入される整数値は基数16で表されます。これは、 std::hex マニピュレータ、次のように:

ダウンロード  コードを実行する

2.使用する std::stoul

別のオプションは、 std::stoul 16進文字列を指定された基数の符号なし整数に変換するための関数。 The stoul 関数はC++11で導入され、ヘッダーで定義されています <string> と使用 std::strtoul 変換を実行します。も参照してください std::stoi, std::stol、 と std::stoull.

ダウンロード  コードを実行する

 
The std::stoul 関数がスローします std::invalid_argument 不正な入力の例外と std::out_of_range 整数のオーバーフローで。ご了承ください std::stoul 次のような文字列を変換します 3e8x 整数に 1000 (16進 3e8)そして例外をスローしません。

3.使用する boost::lexical_cast

Boost C++ライブラリをすでに使用している場合は、16進文字列を次の整数に変換できます。 boost::lexical_cast<int>、以下に示すように。に注意してください boost::lexical_cast 舞台裏で文字列ストリームを使用します。

コードをダウンロード

4.使用する sscanf

最後に、 sscanf() フォーマット文字列を使用して16進C文字列を整数に変換する関数 %x。あなたはそれを動作させるために以下のようなことをすることができます std::string.

ダウンロード  コードを実行する

これで、C++で16進文字列を整数に変換することができます。