ホームページ > バックエンド開発 > C++ > C で 16 進数文字列を符号付き整数に変換するにはどうすればよいですか?

C で 16 進数文字列を符号付き整数に変換するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-28 13:03:12
オリジナル
505 人が閲覧しました

How Can I Convert a Hex String to a Signed Integer in C  ?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート