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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 20:45:14979ブラウズ

How to Convert a C   Hex String to a Signed Integer?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。