C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で整数を16進数文字列に変換する方法

この記事では、C++で整数を16進数の文字列に変換する方法を紹介します。整数を16進数へ変換するには、剰余や除算を繰り返す数学的な手順を実装する方法もありますが、ここではより簡単なテクニックを使って問題を解決します。

%Xフォーマット指定子とは

C/C++には「%X」というフォーマット指定子が用意されています。これは変数の値を16進数形式(大文字のA〜F)で出力するためのもので、「%x」を使えば小文字(a〜f)で出力することもできます。

本プログラムでは、このフォーマット指定子と sprintf() 関数を組み合わせることで、数値をそのまま文字列として取得しています。

入力: 整数 255
出力: FF

アルゴリズム

ステップ1: ユーザーから数値を入力する
ステップ2: %Xフォーマット指定子を使って数値を文字列に変換する
ステップ3: 結果を出力する
ステップ4: 終了

サンプルコード

#include<iostream>
using namespace std;

int main() {
    int n;
    char hex_string[20];

    cout << "Enter a number: ";
    cin >> n;

    sprintf(hex_string, "%X", n); // 数値を16進数文字列に変換

    cout << hex_string;
    return 0;
}

実行結果

Enter a number: 250
FA

補足:モダンC++での代替手段

sprintf() はバッファサイズを超える書き込みが発生すると危険なため、現代のC++ではより安全な方法が推奨されます。例えば、std::stringstream を使えば次のように記述できます。

#include<iostream>
#include<sstream>
using namespace std;

int main() {
    int n = 255;
    stringstream ss;
    ss << hex << uppercase << n;
    string hex_string = ss.str();
    cout << hex_string; // 出力: FF
}

C++20以降であれば std::format("{:X}", n) を使うことも可能です。用途や環境に応じて適切な方法を選択しましょう。

  1. 【Android開発】カラー整数(int)を16進数カラーコード文字列に変換する方法

    Androidアプリ開発では、色情報がint型の整数値として扱われることが多く、これを「#FF5733」のような16進数のカラーコード文字列に変換したいケースがあります。本記事では、Integer.toHexString()メソッドを使ってカラー整数を16進文字列に変換する方法を、実際のサンプルプロジェクトとともにわかりやすく解説します。変換の仕組みAndroidでは、色はARGB形式(アルファ・赤・緑・青)の32ビット整数として表現されます。そのため、-16895234のような負の値も有効なカラー整数です。Integer.toHexString(int)で16進文字列に変換した後、先頭2桁は

  2. C#で16進文字列を16進数値に変換する方法

    C#では、「7D」のような16進表記の文字列を簡単に数値へ変換できます。この記事では、Convert.ToSByte()メソッドとConvert.ToInt32()メソッドを使った2つの代表的な方法を、サンプルコード付きで解説します。 方法1:Convert.ToSByte()を使う まず、変換対象となる16進文字列を設定します。 string str = "7D"; 次に、Convert.ToSByte()メソッドの第2引数に基数「16」を指定して呼び出すことで、16進文字列を数値に変換できます。 Console.WriteLine(Convert.ToSByte(str