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

C++で10進数を16進数に変換するプログラムの作り方


10進数の数値が入力として与えられたとき、その数値を16進数に変換するのが本記事の目的です。

コンピュータの世界では、16進数は基数16で表現され、10進数は基数10で表現されます。10進数は0〜9の値を使って表されるのに対し、16進数は0〜15の数字を持ちます。そのうち10は「A」、11は「B」、12は「C」、13は「D」、14は「E」、15は「F」として表されます。

10進数から16進数への変換手順

10進数を16進数に変換するには、以下の手順に従います。

  • まず、与えられた数値を変換先の基数で割ります。たとえば、6789を16進数に変換する場合、基数である16で6789を割り、商を求めて保存します。余りが0〜9であればそのまま保存し、10〜15であれば対応する文字「A」〜「F」に変換します。
  • 次に、得られた商を再び基数16で割り、同様に余りを保存していきます。
  • 保存した余りの桁を逆順に並べ替えます。
  • 商が0になる(それ以上割り切れなくなる)まで、この手順を繰り返します。

以下は、10進数を16進数に変換する過程を図で表したものです。

C++で10進数を16進数に変換するプログラムの作り方

変換例

入力: 6789
  6789を基数16で割る: 6789 / 16 = 余り 5、商 424
  商を基数16で割る: 424 / 16 = 余り 8、商 26
  商を基数16で割る: 26 / 16 = 余り 10、商 1
  最後に、得られた余りを逆順に並べると16進数の値になります。
出力: 1A85

この例では、余りを順に並べると「5、8、10」ですが、これを逆順にすると「10、8、5」となり、10を「A」に置き換えることで「1A85」が得られます。

アルゴリズム

開始
ステップ1: 10進数を16進数に変換する関数を宣言する
  void convert(int num)
    char型の配列 arr[100] を宣言
    int i = 0 を設定
    while(num != 0) ループ
      int temp = 0 を設定
      temp = num % 16 を計算
      もし temp < 10 ならば
        arr[i] = temp + 48 を設定
        i をインクリメント
      そうでなければ
        arr[i] = temp + 55 を設定
        i をインクリメント
      num = num / 16 を設定
    ループ終了
    for(int j = i-1; j >= 0; j--) ループ
      arr[j] を出力
ステップ2: main() 内で
  int num = 6789 を設定
  convert(num) を呼び出す
終了

C++での実装例

#include <iostream>
using namespace std;

// 10進数を16進数に変換する関数
void convert(int num) {
    char arr[100];
    int i = 0;
    while (num != 0) {
        int temp = 0;
        temp = num % 16;
        if (temp < 10) {
            arr[i] = temp + 48; // '0'〜'9' のASCIIコード
            i++;
        } else {
            arr[i] = temp + 55; // 'A'〜'F' のASCIIコード
            i++;
        }
        num = num / 16;
    }
    for (int j = i - 1; j >= 0; j--)
        cout << arr[j];
}

int main() {
    int num = 6789;
    cout << num << " を16進数に変換すると: ";
    convert(num);
    return 0;
}

ここで、48は文字「0」のASCIIコード、55は文字「A」のASCIIコード(65)から10を引いた値です。これにより、余りの数値をそのまま対応する文字に変換できます。

実行結果

上記のコードを実行すると、以下の出力が得られます。

6789 を16進数に変換すると: 1A85

補足: 標準ライブラリを使った簡単な方法

C++では、iostreamのマニピュレータ「std::hex」を使うことで、より簡単に16進数へ変換することもできます。

#include <iostream>
using namespace std;

int main() {
    int num = 6789;
    cout << hex << uppercase << num << endl; // 出力: 1A85
    return 0;
}

この方法では、変換処理を自分で実装する必要がなく、1行で16進数への変換が可能です。学習目的で変換ロジックを理解したい場合には自作関数を、実務では標準ライブラリを使うのがおすすめです。

  1. C++で10進数を2進数に変換するプログラムの書き方

    コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに2で割り、同じように余

  2. C++で2進数を10進数に変換するプログラムの作り方

    2進数が入力として与えられたとき、その2進数を10進数へ変換するのが本記事のテーマです。 コンピュータにおける10進数は基数10で表現されます。一方、2進数は基数2で表現され、使用するのは0と1という2つの数字だけです。それに対して10進数では、0から9までの任意の数字を扱うことができます。 2進数を10進数に変換するには、右端の桁から順に各桁の数字を取り出し、2のべき乗(0乗から始まり、桁数-1乗まで1ずつ増加)を掛け合わせます。そして、その掛け算の結果をすべて足し合わせることで、最終的な10進数の値が求まります。 以下は、2進数を10進数に変換する流れを図で表したものです。 具体例 入