16進数を使う場面では、どの形式で表記するかがシステムや言語によって異なります。
「0xFF」「FFh」「#FF」など、同じ値でも表記方法がさまざまであるため、それぞれの違いと使い分けを理解しておくことが重要です。
接頭辞や接尾辞の意味・プログラミング言語ごとの書式・標準的な表記ルールを知ることで、コードの可読性と正確性が高まります。
本記事では、16進数の表記方法・接頭辞・接尾辞・各プログラミング言語での書式・標準表記のルールまで詳しく解説していきます。
16進数の表記方法の種類と概要
それではまず、16進数の表記方法の種類と概要について解説していきます。
16進数には複数の表記方法があり、使用するシステム・プログラミング言語・用途によって異なる書式が採用されています。
主な表記方法としては、接頭辞を使う方法・接尾辞を使う方法・特殊記号を使う方法の3種類があります。
16進数の主な表記方法一覧
・0xFF:C言語系・Python・JavaScriptなど多くの言語で使われる接頭辞方式
・FFh:アセンブリ言語・一部のドキュメントで使われる接尾辞方式
・&HFF:Visual Basicで使われる接頭辞方式
・16#FF#:Ada言語で使われるベース記法
・#FF:HTMLのカラーコードで使われる記号方式
・U+00FF:Unicodeコードポイントの表記方式
最も広く使われているのは「0x」接頭辞方式であり、C言語の文化から多くの言語・ツールに伝播した標準的な書式といえるでしょう。
「0x」接頭辞の意味と由来
「0x」という接頭辞は、C言語が普及するとともに広まった16進数の標準的な表記方式です。
「0」は数値であることを示し、「x」はhexadecimal(16進数)の頭文字の「hex」に由来するという説が有力ですが、正確な由来については諸説あり、「x」がeXtended(拡張)の意味という説もあります。
「0x」に続く文字は大文字・小文字どちらでも有効であり、「0xFF」と「0xff」は同じ値を表します。
プロジェクトやコーディング規約によって大文字・小文字の統一ルールが決まっていることが多いため、チームの規約に従うことが重要でしょう。
「h」接尾辞の使われ方
「h」を末尾に付ける接尾辞方式は、主にアセンブリ言語やハードウェア系のドキュメントで使われます。
「FFh」「1Ah」のように16進数の末尾に小文字または大文字の「h」を付けて表記します。
ただし、接尾辞方式では先頭がアルファベット(A〜F)の数値の場合、数値なのか識別子なのか区別がつかないため、先頭に「0」を補って「0FFh」のように表記するルールがある点に注意が必要でしょう。
プログラミング言語ごとの16進数表記方式
続いては、主なプログラミング言語ごとの16進数表記方式を確認していきます。
| 言語 | 表記方式 | 例 |
|---|---|---|
| C・C++ | 0x接頭辞 | 0xFF、0xABCD |
| Python | 0x接頭辞 | 0xff、0xABCD |
| Java | 0x接頭辞 | 0xFF、0xABCDL(long型) |
| JavaScript | 0x接頭辞 | 0xFF、0xabcd |
| Ruby | 0x接頭辞 | 0xFF |
| Visual Basic | &H接頭辞 | &HFF |
| PowerShell | 0x接頭辞 | 0xFF |
| HTML/CSS | #記号 | #FF5733 |
C言語での16進数の書式ルール
C言語では「0x」または「0X」接頭辞で16進数リテラルを表記します。
型サフィックスを組み合わせることで、データ型を明示することもできます。
C言語での16進数リテラルの書式例
int val = 0xFF; → int型の255
unsigned int val = 0xFFu; → unsigned int型(uサフィックス)
long val = 0xFFFFL; → long型(Lサフィックス)
unsigned long val = 0xFFFFUL; → unsigned long型
printf(“%X”, val); → 大文字16進数で出力
printf(“%x”, val); → 小文字16進数で出力
printf関数の書式指定子「%X」(大文字)と「%x」(小文字)の使い分けも、コーディング規約として統一しておくことが重要でしょう。
Pythonでの16進数の書式とフォーマット
Pythonでは16進数リテラルとして「0x」接頭辞を使い、出力フォーマットも柔軟に指定できます。
Pythonでの16進数の書式例
val = 0xFF → 255として格納
hex(255) → ‘0xff’(小文字)
format(255, ‘X’) → ‘FF’(大文字、0xなし)
format(255, ’08X’) → ‘000000FF’(8桁ゼロパディング大文字)
f'{255:#010x}’ → ‘0x000000ff’(0x付き10桁小文字)
フォーマット指定子を使いこなすことで、桁数の統一・大文字小文字の指定・0xの付与などを柔軟にコントロールできます。
ログ出力やデータ処理でのフォーマット統一に役立てることができるでしょう。
標準的な16進数表記のルールと注意点
続いては、標準的な16進数表記のルールと注意点を確認していきます。
プロジェクトやドキュメントで16進数を扱う際は、表記の一貫性を保つことが可読性とメンテナンス性の向上につながります。
大文字・小文字の統一
16進数のA〜Fは大文字・小文字どちらでも表記できますが、プロジェクト内では統一することが重要です。
一般的にコード中のリテラルは小文字(0xff)、ドキュメントや定数名は大文字(0xFF)という慣例がある場合もありますが、チームのコーディング規約に従うことが最優先となります。
コードレビューで指摘されやすいポイントでもあるため、プロジェクト開始時に統一ルールを決めておくとよいでしょう。
ゼロパディングによる桁数の統一
16進数を表記する際、桁数を統一することで可読性が向上します。
1バイト(8ビット)の値は必ず2桁(0x00〜0xFF)、2バイトは4桁(0x0000〜0xFFFF)のように、データのビット幅に合わせて桁数を揃える慣例があります。
「0x5」と書くよりも「0x05」と書く方が、1バイトのデータであることが一目でわかるでしょう。
まとめ
本記事では、16進数の表記方法・接頭辞・接尾辞・各プログラミング言語での書式・標準的なルールまで詳しく解説してきました。
「0x」接頭辞が最も広く使われる標準的な表記方式であり、HTML・CSSでは「#」記号、アセンブリでは「h」接尾辞が使われるなど、用途によって使い分けが必要です。
大文字・小文字の統一とゼロパディングによる桁数の統一が、コードの可読性を高める重要なポイントとなるでしょう。
プロジェクトのコーディング規約を確認しながら、一貫した16進数表記を心がけてください。