コンピュータやプログラミングの世界で頻繁に登場する16進数(ヘキサデシマル)。
カラーコード・メモリアドレス・バイトデータなど、さまざまな場面で使われており、エンジニアやプログラマーにとっては必須の知識です。
しかし「16進数って何?」「どうやって変換するの?」と感じている方も多いのではないでしょうか。
本記事では、10進数から16進数への変換方法を基礎からわかりやすく解説します。
手計算の手順・エクセルでの変換・VBAでの活用・便利な変換ツールまで、幅広い内容でお伝えしますので、初心者の方からプログラミング学習中の方まで役立てていただける内容です。
10進数から16進数への変換は「16で割り続けて余りを並べる」のが基本
それではまず、10進数から16進数への変換の基本的な手順について解説していきます。
16進数への変換の基本は、10進数を16で割り続けて余りを逆順に並べるという方法です。
2進数変換と同じ考え方ですが、余りが10以上になった場合にはA〜Fのアルファベットを使う点が16進数特有のルールとなります。
16進数の数字とアルファベットの対応
16進数では0〜9の数字に加え、10〜15をA〜Fのアルファベットで表します。
| 10進数 | 16進数 | 10進数 | 16進数 |
|---|---|---|---|
| 0 | 0 | 8 | 8 |
| 1 | 1 | 9 | 9 |
| 2 | 2 | 10 | A |
| 3 | 3 | 11 | B |
| 4 | 4 | 12 | C |
| 5 | 5 | 13 | D |
| 6 | 6 | 14 | E |
| 7 | 7 | 15 | F |
16進数変換の具体的な計算手順
10進数の「255」を16進数に変換する例を見てみましょう。
255 ÷ 16 = 商15 余り15(=F)
15 ÷ 16 = 商0 余り15(=F)
余りを下から並べると:FF
よって、255(10進数)= FF(16進数)
別の例として、10進数の「1000」を変換してみます。
1000 ÷ 16 = 商62 余り8
62 ÷ 16 = 商3 余り14(=E)
3 ÷ 16 = 商0 余り3
余りを下から並べると:3E8
よって、1000(10進数)= 3E8(16進数)
16進数の重みと検算方法
16進数の各桁の重みは、右から順に16⁰=1・16¹=16・16²=256・16³=4096…となります。
先ほどの「3E8」を検算すると、3×256+14×16+8×1=768+224+8=1000となり、正しく変換できていることが確認できます。
変換後の検算は重みを使った足し算で必ず行うことで、計算ミスを防ぐことができるでしょう。
エクセル・VBAで16進数変換を行う方法
続いては、エクセルとVBAを活用した16進数変換の方法を確認していきます。
大量のデータを一括変換したい場合や、業務で繰り返し使う場合にはエクセルの関数やVBAが非常に効率的です。
ExcelのDEC2HEX関数を使う方法
ExcelにはDEC2HEX(デシマル・トゥ・ヘックス)という関数があり、10進数を16進数に変換できます。
書式:=DEC2HEX(数値, [桁数])
例:=DEC2HEX(255) → FF
例:=DEC2HEX(255, 4) → 00FF(4桁ゼロ埋め)
例:=DEC2HEX(1000) → 3E8
注意点:DEC2HEXは-549,755,813,888〜549,755,813,887の範囲内の整数のみ対応
逆に16進数を10進数に戻したい場合は「HEX2DEC関数」を使います。
書式:=HEX2DEC(16進数文字列)
例:=HEX2DEC(“FF”) → 255
例:=HEX2DEC(“3E8”) → 1000
VBAで16進数変換を行う方法
VBA(Visual Basic for Applications)ではHex()関数を使うことで、10進数を16進数に変換できます。
Sub HexConvert()
Dim n As Long
n = 255
MsgBox Hex(n) ‘ 表示:FF
End Sub
逆に16進数→10進数:Val(“&H” & “FF”) → 255
VBAでの16進数変換は、バイナリデータの処理・カラーコード変換・メモリアドレス計算など、さまざまな業務自動化に活用できます。
Pythonやプログラミング言語での変換方法
Pythonではhex()関数やformat()関数を使って16進数変換が行えます。
>>> hex(255)
‘0xff’
>>> format(255, ‘X’) # 大文字で表示
‘FF’
>>> format(255, ’04X’) # 4桁ゼロ埋め大文字
’00FF’
Pythonのformat()関数は桁数指定や大文字・小文字の切り替えも柔軟に対応しており、実務でも非常に使いやすい方法です。
16進数変換ツールの活用と2進数・8進数との関係
続いては、16進数変換ツールの活用方法と、2進数・8進数との関係について確認していきます。
16進数・2進数・8進数は互いに密接な関係を持っており、変換の仕組みを理解することでプログラミングや電子工学への理解が大きく深まるでしょう。
オンライン変換ツールの活用
インターネット上には多くの進数変換ツールが公開されており、10進数・2進数・8進数・16進数を瞬時に相互変換できます。
Windowsの電卓(プログラマーモード)でも同様の変換が可能で、DEC・BIN・OCT・HEXのボタンを切り替えるだけで変換結果が表示されます。
学習初期の確認作業や、急いで換算したい場合に大変便利でしょう。
16進数と2進数の関係(4ビットまとめ変換)
16進数と2進数の間には非常に美しい関係があります。
16進数1桁は必ず2進数4桁(4ビット)に対応するため、2進数の4桁ごとに区切って16進数に変換することができます。
例:2進数「11111111」を16進数に変換
4桁ずつ区切る:1111 | 1111
各ブロックを16進数に:F | F
答え:FF
この方法を使えば、長い2進数でも素早く16進数に変換できます。
主な進数の相互変換早見表
以下に0〜15の10進数・2進数・8進数・16進数の対応表を示します。
| 10進数 | 2進数 | 8進数 | 16進数 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
16進数が使われる実際の場面と活用例
続いては、16進数が実際にどのような場面で使われているかを確認していきます。
16進数は単なる数学の話題にとどまらず、日常的なIT技術の至るところで活躍している実用的な数表現です。
カラーコード(RGB)での活用
Webデザインで使われるカラーコードは、16進数で色を表現しています。
たとえば「#FF5733」というカラーコードは、赤(FF=255)・緑(57=87)・青(33=51)という3つの色成分をそれぞれ16進数2桁で表したものです。
RGBの各成分は0〜255(16進数では00〜FF)の範囲で表され、16進数2桁がちょうど8ビット(1バイト)に対応することから、この表現が広く使われています。
メモリアドレスとポインタ
C言語やアセンブリ言語などの低レベルプログラミングでは、メモリアドレスを16進数で表記することが一般的です。
たとえば「0x0000FFFF」のように「0x」プレフィックスを付けて16進数であることを示し、メモリ領域・レジスタ・ポインタの値を管理します。
バイナリファイルとデバッグ
バイナリエディタでファイルの中身を確認する際も、16進数(Hexダンプ)表示が使われます。
ファイルの先頭バイトを読むことでファイルフォーマットを識別する「マジックナンバー」も16進数で表記されるため、デバッグやリバースエンジニアリングでは16進数の読み書きが必須スキルとなります。
重要ポイント:16進数は「0〜9+A〜F」の16種類の記号で数を表します。10進数から変換するときは16で割り続けて余りを逆順に並べる。ExcelならDEC2HEX関数、PythonならHex()またはformat()関数が便利です。16進数1桁は2進数4桁に対応するため、2進数との相互変換も簡単に行えます。
まとめ
本記事では、10進数から16進数への変換方法を、基本的な手計算の手順・エクセル・VBA・Pythonなどのツール活用・実際の使われ方まで幅広く解説しました。
16進数変換の基本は「16で割り続けて余りを逆順に並べる」というシンプルなアルゴリズムです。
余りが10以上の場合はA〜Fのアルファベットに置き換えることを忘れないようにしましょう。
エクセルではDEC2HEX関数・VBAではHex()関数・PythonではHex()やformat()関数を活用することで、大量データの処理も効率的に行えます。
また、16進数は2進数との相性が非常によく、4ビットまとめ変換をマスターすることでプログラミングの理解が格段に深まるでしょう。
カラーコード・メモリアドレス・バイナリデータなど、IT技術の幅広い分野で活躍する16進数の知識をぜひ日々の学習と実務に活かしてください。