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進数に変換する過程を図で表したものです。

変換例
入力: 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進数への変換が可能です。学習目的で変換ロジックを理解したい場合には自作関数を、実務では標準ライブラリを使うのがおすすめです。
-
C++で10進数を2進数に変換するプログラムの書き方
コンピューターの内部では、すべてのデータが2進数(基数2)として扱われています。一方、私たちが日常的に使う10進数は「0〜9」の数字を組み合わせた基数10の記数法です。この記事では、C++を使って入力された10進数を2進数へ変換するプログラムの考え方と実装方法を解説します。10進数から2進数への変換手順10進数を2進数に変換する基本的な方法は、「2で割った余りを順番に記録していく」ものです。具体的には次の手順で行います。まず、変換したい数値を基数である2で割り、商と余りを求めます。余りが0であればその桁は「0」、1であれば「1」として記録します。続いて、得られた商をさらに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進数に変換する流れを図で表したものです。 具体例 入