「10進数を2進数や16進数に変換したいけど、手計算は面倒…」
データ処理やIT系の業務で、N進数への変換が必要になる場面ってありますよね。
手作業で割り算を繰り返すのは時間がかかるし、ミスも出やすいです。
そんなときに使えるのがBASE関数です。10進数の数値を指定するだけで、2進数・8進数・16進数など好きな基数に一発変換できます。
この記事では基本の書き方からゼロ埋め、DECIMAL関数との使い分けまで紹介します。
BASE関数とは?
BASE関数(読み方: ベース関数)は、10進数の数値を指定した基数(N進数)の文字列に変換する関数です。
名前の「BASE」は「基数」を意味する英語からきています。
たとえば =BASE(255, 16) と書くと「FF」が返ります。10進数の255を16進数に変換した結果ですね。
BASE関数にできることをまとめると、次のとおりです。
- 10進数を2進数・8進数・16進数に変換する
- 2〜36進数まで好きな基数を指定できる
- 桁数を指定してゼロ埋め(先頭に0を付ける)できる
- DECIMAL関数と組み合わせて検算できる
NOTE
BASE関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、互換性は完全です。
BASE関数の書き方(構文と引数)
基本構文
=BASE(値, 基数, [最小桁数])
カッコの中に変換元の10進数と、変換先の基数を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 変換元の10進数(0以上の整数) |
| 基数 | 必須 | 変換先の基数(2〜36の整数) |
| 最小桁数 | 任意 | 結果の最小桁数。足りない分はゼロ埋めされる |
値に小数を指定した場合、小数部分は切り捨てられます。基数は2〜36の範囲で指定できます。36進数では0〜9とA〜Zの36文字が使われます。
BASE関数の基本的な使い方
10進数を2進数に変換する
もっともシンプルな使い方です。
=BASE(10, 2)
結果は「1010」です。10進数の10を2進数で表すと1010になります。
=BASE(255, 2)
結果は「11111111」です。255は2進数で8桁になります。
10進数を16進数に変換する
カラーコードなどで使われる16進数への変換です。
=BASE(255, 16)
結果は「FF」です。255は16進数でFFですね。
=BASE(4095, 16)
結果は「FFF」です。16進数では10〜15をA〜Fの文字で表します。
10進数を8進数に変換する
8進数はファイルのパーミッション(権限設定)などで使われます。
=BASE(8, 8)
結果は「10」です。10進数の8は8進数で10になります。
=BASE(255, 8)
結果は「377」です。
セル参照を使う
A1に「100」が入っているとします。
=BASE(A1, 16)
結果は「64」です。セル参照を使えば、値を変えるだけで結果が自動更新されます。
特殊なケース
0を変換した場合は「0」が返ります。
=BASE(0, 2)
結果は「0」です。
小数を指定した場合は、小数点以下が切り捨てられて変換されます。
=BASE(10.9, 2)
この数式は =BASE(10, 2) と同じ結果で「1010」を返します。
BASE関数の実践的な使い方・応用例
桁数を指定してゼロ埋めする
3つ目の引数「最小桁数」を使うと、結果を指定した桁数に揃えられます。
=BASE(5, 2, 8)
結果は「00000101」です。5の2進数表現は「101」ですが、8桁に満たない分がゼロ埋めされます。
一覧表でビット列を揃えたいときに便利です。
=BASE(10, 16, 4)
結果は「000A」です。16進数のAを4桁に揃えています。
TIP
ゼロ埋めは見た目を揃えるだけで、値そのものは変わりません。データ一覧をきれいに見せたいときに活用してみてください。
DECIMAL関数と組み合わせて検算する
BASE関数で変換した結果をDECIMAL関数で元に戻せば、変換が正しいかどうか検算できます。
=BASE(255, 16)
結果は「FF」です。
=DECIMAL("FF", 16)
結果は「255」です。元の数値に戻りましたね。
1つの数式にまとめて検算することも可能です。
=DECIMAL(BASE(100, 8), 8)
結果は「100」です。元の値と一致すれば、変換は正しいといえます。
RGBカラーコードを16進数に変換する
色のRGB値(0〜255)を16進数のカラーコードに変換できます。
A1に「255」(赤)、B1に「128」(緑)、C1に「0」(橙)が入っているとします。
=BASE(A1,16,2) & BASE(B1,16,2) & BASE(C1,16,2)
結果は「FF8000」です。各色を2桁の16進数に変換して連結しています。
DECIMAL関数との違い・使い分け
| 関数 | 動作 | 用途 |
|---|---|---|
| BASE | 10進数 → N進数に変換 | 2進数・16進数などへの変換 |
| DECIMAL | N進数 → 10進数に変換 | 16進数カラーコードの数値化など |
逆関数の関係
BASE関数とDECIMAL関数は逆関数の関係にあります。BASEで変換した結果をDECIMALに渡すと、元の値に戻ります。
BASE(100, 2) → "1100100"
DECIMAL("1100100", 2) → 100
つまり「10進数 → N進数」がBASE、「N進数 → 10進数」がDECIMALです。
使い分けの目安
BASE関数を使う場面:
- 10進数の数値を2進数・8進数・16進数で表示したい
- カラーコードを生成したい
- ビット列を作成したい
DECIMAL関数を使う場面:
- 16進数のカラーコードを数値に変換したい
- 2進数や8進数のデータを10進数で計算したい
- 他システムから受け取ったN進数データを数値化したい
TIP
BASEは「10進数から出る」変換、DECIMALは「10進数に戻る」変換と覚えるとわかりやすいです。
よくあるエラーと対処法
BASE関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 値が負の数(例: BASE(-5, 2)) | 0以上の整数を指定する |
| #NUM! | 基数が範囲外(2未満または36超) | 基数は2〜36の整数にする |
| #NUM! | 最小桁数が負の数 | 0以上の整数を指定する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カッコ忘れ等) | 数式の入力内容を見直す |
負の数を指定したとき
もっとも多いエラーです。BASE関数は0以上の整数でしか使えません。
=BASE(-10, 2)
この数式は#NUM!エラーになります。ABS関数で絶対値に変換すれば回避できます。
=BASE(ABS(A1), 2)
基数が範囲外のとき
基数は2〜36の整数を指定する必要があります。
=BASE(10, 1)
この数式は#NUM!エラーになります。1進数は存在しないため、2以上を指定してください。
戻り値が文字列であることに注意
BASE関数の結果は数値ではなく文字列です。そのため、結果に対して算術演算はできません。
=BASE(10, 2) + 1
この数式は#VALUE!エラーになります。計算が必要な場合は、先にDECIMAL関数で10進数に戻してください。
Excelとの違い
BASE関数はExcelとGoogleスプレッドシートで完全に同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =BASE(数値, 基数, [最小長]) | =BASE(値, 基数, [最小桁数]) |
| 動作 | 10進数をN進数に変換 | 10進数をN進数に変換 |
| 基数の範囲 | 2〜36 | 2〜36 |
| エラー時 | #NUM! / #VALUE! | #NUM! / #VALUE! |
引数名の表記が若干異なるだけで、機能は完全に同じです。ExcelのDECIMAL関数についてはExcelのDECIMAL関数の記事で詳しく解説しています。
まとめ
BASE関数は、10進数の数値を指定した基数(N進数)の文字列に変換する関数です。
ポイントを整理します。
- 構文は
=BASE(値, 基数, [最小桁数])で、2〜36進数に変換できる - 2進数・8進数・16進数への変換がよく使われる
- 3つ目の引数で桁数を指定すれば、ゼロ埋めで桁を揃えられる
- 戻り値は文字列型。算術演算には使えないので注意
- DECIMAL関数は逆関数の関係。BASEで変換した結果をDECIMALに渡すと元に戻る
- Excelとの互換性も完全で、ファイルのやり取りでも安心
- 同じ数学系の関数としてGCD関数(最大公約数)やLCM関数(最小公倍数)もあわせて覚えておくと便利
まずは =BASE(255, 16) で「255を16進数に → FF」から試してみてください。
