「センサーから出力された2進数のログを、開発チームに合わせて16進数で渡したい…」
ネットワーク機器の設定値やメモリダンプ、カラーコードなど、2進数と16進数を行き来する場面は意外と多いものです。手計算で4桁ずつ区切って変換するのは、桁が増えるほど面倒ですよね。
そんなときに便利なのがGoogleスプレッドシートのBIN2HEX関数です。2進数のセルを指定するだけで、16進数に一発変換してくれますよ。
しかも桁数を揃えて表示できるので、IPアドレスやMACアドレスのようにフォーマットが決まっているデータも整った形で出力できます。
この記事では、BIN2HEX関数の基本から桁数指定、符号付き2進数の扱い、エラー対処法、関連関数との使い分けまでまとめて解説します。
BIN2HEX関数とは?
BIN2HEX関数(読み方: ビントゥヘックス / バイナリ・トゥ・ヘキサ)は、2進数を16進数に変換するエンジニアリング関数です。
2進数は「0」と「1」だけで数値を表す方法です。コンピュータの内部では、すべてのデータがこの形式で処理されています。
一方、16進数は「0〜9」と「A〜F」を組み合わせて数値を表す方法ですね。
2進数の4桁が16進数の1桁にちょうど対応するため、長いビット列をコンパクトに表現するときに16進数がよく使われます。
たとえば =BIN2HEX("11111111") と入力すると、結果は「FF」です。8桁の2進数が、たった2文字の16進数になりました。
関数名の由来
関数名を分解すると、次の意味になります。
- BIN = Binary(バイナリ、2進数)
- 2 = to(〜へ)
- HEX = Hexadecimal(ヘキサデシマル、16進数)
つまり「BINからHEXへ」、2進数を16進数に変換するという意味がそのまま名前になっています。基数変換系の関数はすべて同じ命名ルールです。
BIN2HEX関数でできること
BIN2HEX関数の特徴をまとめると、次のとおりです。
- 0と1で構成された2進数を16進数に変換する
- 最大10桁(10ビット)の2進数に対応する
- 桁数を指定して結果の文字数を揃えられる
- 符号付き2進数(負の数)にも対応する
- Excelとの互換性があり、ファイルのやり取りでもそのまま使える
NOTE
BIN2HEX関数はGoogleスプレッドシートのエンジニアリング関数カテゴリに属します。全バージョンで追加設定なしに利用できます。
BIN2HEX関数の書き方(構文と引数)
基本構文
=BIN2HEX(数値, [桁数])
カッコの中に、変換したい2進数と、必要に応じて桁数を指定します。桁数は省略できます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 16進数に変換したい2進数。0と1のみで構成された値を指定する |
| 桁数 | 任意 | 結果の最小文字数。省略すると必要最小限の桁数で返される |
引数のルール
数値に指定できるのは、次の条件を満たす値だけです。
- 使える文字は「0」と「1」だけ
- 最大10桁(10ビット)まで
- 直接入力でもセル参照でもOK
- 文字列として指定する場合はダブルクォーテーションで囲む
桁数のルールは、次のとおりです。
- 1〜10の範囲で指定する
- 結果の桁数より小さい値を指定するとエラーになる
- 負の数を変換した場合、桁数指定は無視されて10桁で返される
WARNING
直接入力で
=BIN2HEX(00101)のように先頭に0を付けると、スプレッドシートが10進数として解釈し、先頭の0が消えてしまうことがあります。先頭0が意味を持つ場合は"00101"と文字列で指定するのが安全です。
2進数と16進数の対応表
BIN2HEX関数の動きをイメージしやすくするため、代表的な対応を表にまとめました。
| 2進数 | 16進数 | 10進数 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 10 | 2 | 2 |
| 1010 | A | 10 |
| 1111 | F | 15 |
| 10000 | 10 | 16 |
| 11111 | 1F | 31 |
| 100000 | 20 | 32 |
| 11111111 | FF | 255 |
| 100000000 | 100 | 256 |
| 111111111 | 1FF | 511 |
ポイントは「2進数の4桁が16進数の1桁にぴったり対応する」点です。たとえば8桁の2進数 11111111 を考えてみましょう。
上位4桁の 1111 と下位4桁の 1111 に分けて、それぞれを F に変換すれば FF という形になりますよ。
BIN2HEX関数の基本的な使い方
2進数を直接入力する
もっともシンプルな使い方から見ていきましょう。
=BIN2HEX("1010")
結果は「A」です。2進数の 1010 は、16進数では A にあたります。
=BIN2HEX("11111111")
結果は「FF」です。8桁すべてが1の場合、16進数では FF になります。これは1バイト(8ビット)の最大値ですね。
セル参照で2進数を変換する
実務では、セルに入っている2進数を変換する場面が多いです。A2のセルに「11001」が入っている場合、次のように書きます。
=BIN2HEX(A2)
結果は「19」です。2進数の 11001 は、16進数の 19 にあたります。
複数のセルをまとめて変換する
複数の2進数データをまとめて変換したい場合は、通常どおり数式を下方向にドラッグしてコピーすればOKです。
| A列: 2進数 | B列: 数式 | 結果(16進数) |
|---|---|---|
| 1 | =BIN2HEX(A2) | 1 |
| 1010 | =BIN2HEX(A3) | A |
| 11001 | =BIN2HEX(A4) | 19 |
| 1100100 | =BIN2HEX(A5) | 64 |
| 11111111 | =BIN2HEX(A6) | FF |
TIP
ARRAYFORMULAと組み合わせて
=ARRAYFORMULA(BIN2HEX(A2:A6))と書けば、1つの数式で範囲全体を一括変換できます。スプレッドシートならではの書き方ですね。
桁数を指定して表示を揃える
BIN2HEX関数の便利な特徴が、第2引数の「桁数」です。これを指定すると、結果の文字数を揃えられます。
桁数指定の基本
不足分は先頭に「0」が補われます。
=BIN2HEX("1010", 4)
結果は「000A」です。桁数を省略した場合は「A」とだけ表示されますが、4を指定したことで先頭に「0」が3つ追加されました。
桁数指定が役立つ場面
桁数指定はデータの一覧表を作るときに便利です。桁数がバラバラだと見づらいですよね。
| 数式 | 結果 | 説明 |
|---|---|---|
| =BIN2HEX(“1”, 2) | 01 | 2桁に揃える |
| =BIN2HEX(“1010”, 4) | 000A | 4桁に揃える |
| =BIN2HEX(“11111111”, 4) | 00FF | 4桁に揃える |
カラーコードのように「必ず2桁」「必ず6桁」と決まっているフォーマットで出力するときに、桁数指定が活躍します。
桁数を結果より小さくするとエラー
結果の桁数より小さい値を指定するとエラーになります。
=BIN2HEX("11111111", 1)
→ #NUM! エラー
11111111 は16進数で FF(2桁)になるため、桁数1では収まりません。エラーが出たら、桁数を大きくするか省略してくださいね。
NOTE
負の数を変換した場合は、桁数指定が無視されて常に10桁で返されます。これは2の補数表現で必ず10桁が必要になるためです。
符号付き2進数(10桁の場合)の扱い方
BIN2HEX関数も、BIN2DEC関数と同じく「符号付き2進数」に対応しています。10桁の2進数を指定したときだけ、左端のビットが符号として扱われますよ。
符号ビットの仕組み
10桁の2進数では、各桁の意味が次のようになります。
| 桁 | 10桁目(左端) | 9桁目〜1桁目 |
|---|---|---|
| 役割 | 符号ビット(0=正、1=負) | 数値部分 |
| 例: 正の最大 | 0 | 111111111(10進数で511) |
| 例: -1 | 1 | 111111111 |
| 例: 負の最小 | 1 | 000000000(10進数で-512) |
10桁目が「1」の場合は負の数として扱われ、結果は2の補数表現の16進数になります。
符号付き2進数の変換例
具体例を見ていきましょう。
=BIN2HEX("1111111111")
結果は「FFFFFFFFFF」です。10桁すべてが1の場合、2の補数では -1 を表します。そのため16進数では10桁すべてが F になります。
=BIN2HEX("1000000000")
結果は「FFFFFFFE00」です。これが10ビットの符号付き2進数で表現できる最小値(-512)の16進数表現です。
=BIN2HEX("0111111111")
結果は「1FF」です。こちらが正の最大値(511)の16進数表現になります。
9桁以下は符号ビットが無視される
9桁以下の2進数では、最上位が1でも正の数として扱われます。
=BIN2HEX("111111111")
→ 1FF(9桁なので正の数)
=BIN2HEX("11111111")
→ FF(8桁なので正の数)
同じ「1が並んだ形」でも、桁数によって結果が変わる点に注意してくださいね。
NOTE
符号付き2進数の扱いはExcelのBIN2HEX関数と完全に同じです。Googleスプレッドシートで作成した数式は、Excelにそのままコピーしても動作します。
よくあるエラーと対処法
BIN2HEX関数で発生するエラーは主に2種類です。原因と対処法を表にまとめました。
| エラー | 原因 | 数式の例 | 対処法 |
|---|---|---|---|
| #NUM! | 10桁を超える2進数を指定した | =BIN2HEX(“11111111111”) | 10桁以内に収める |
| #NUM! | 0と1以外の文字が含まれる | =BIN2HEX(“102”) | 0と1だけで構成する |
| #NUM! | 桁数が結果より小さい | =BIN2HEX(“11111111”, 1) | 桁数を大きくするか省略する |
| #NUM! | 桁数に10超を指定した | =BIN2HEX(“1010”, 11) | 桁数を1〜10の範囲で指定する |
| #VALUE! | 無効な引数を指定した | =BIN2HEX(“ABC”) | 数値または数値文字列を指定する |
#NUM!エラーの代表例
実務で一番多いのが、10進数を2進数と間違えて入力するケースです。
=BIN2HEX("102")
→ #NUM! エラー
10進数の「102」をそのまま指定してしまったパターンです。「2」は2進数では使えない文字ですね。
桁数オーバーも見落としがちです。
=BIN2HEX("11111111111")
→ #NUM! エラー
11桁を指定しているため、エラーになります。10桁以内に修正する必要があります。
IFERRORでエラー処理
大量のデータを変換する場合、元データにノイズが混ざることもありますよね。IFERRORと組み合わせて、エラー時の表示をカスタマイズしておくと親切です。
=IFERROR(BIN2HEX(A2), "変換不可")
これでA2が2進数として無効な値でも、エラーではなく「変換不可」というメッセージが表示されます。
TIP
入力値が2進数として有効かを事前に判定したい場合は
=IF(REGEXMATCH(A2, "^[01]{1,10}$"), BIN2HEX(A2), "無効")のようにREGEXMATCH関数と組み合わせるのも便利です。スプレッドシートの正規表現関数が強力に働きますよ。
BIN2HEX関数の実務活用パターン
カラーコードの生成
RGBの各値を2進数で管理しているデータがあれば、16進数のカラーコードに変換できます。
=BIN2HEX(A1, 2) & BIN2HEX(B1, 2) & BIN2HEX(C1, 2)
A1に赤、B1に緑、C1に青の2進数を入力すれば、6桁のカラーコードが完成します。桁数を2に指定すれば、各色が必ず2桁になりますよ。
| A列(赤) | B列(緑) | C列(青) | 結果(カラーコード) |
|---|---|---|---|
| 11111111 | 1010101 | 110011 | FF5533 |
| 0 | 0 | 11111111 | 0000FF |
| 11111111 | 11111111 | 11111111 | FFFFFF |
IPアドレス・MACアドレスの確認
ネットワーク機器のログでは、IPアドレスやMACアドレスが2進数で記録されていることがあります。16進数に変換しておくと、機器のラベルと突合しやすいですね。
=BIN2HEX("11000000", 2) & "." & BIN2HEX("10101000", 2)
結果は C0.A8 です。IPアドレス 192.168 の各オクテットを16進数で確認できました。
メモリダンプの解析
組込み機器のデバッグログを2進数で受け取った場合、メモリアドレスやレジスタ値を16進数に変換しておくと、ドキュメントと照合しやすくなります。
=BIN2HEX(A2, 4)
桁数4で揃えておけば、表示が縦に揃って読みやすくなりますよ。
関連する基数変換関数との使い分け
Googleスプレッドシートには、2進数・8進数・10進数・16進数を相互に変換する関数が12種類あります。BIN2HEX関数はその1つです。
BIN2HEXから派生する関数
BIN2HEX関数の「入力側が2進数」「出力側が16進数」を入れ替えたり、変換先を変えたりするバリエーションがあります。
| 関数名 | 変換方向 | 用途 |
|---|---|---|
| BIN2HEX(この記事) | 2進数 → 16進数 | 2進数のログをコンパクトな16進数で確認 |
| BIN2DEC | 2進数 → 10進数 | 2進数を人が読み慣れた10進数に変換 |
| BIN2OCT | 2進数 → 8進数 | 2進数を8進数表記にする |
| HEX2BIN | 16進数 → 2進数 | BIN2HEXの逆変換。16進数を2進数で確認する |
12種類の基数変換関数の全体像
基数変換関数の命名ルールは「変換元 + 2 + 変換先」です。対応表を頭に入れておくと、必要な関数をすぐに見つけられます。
| 変換元 \ 変換先 | 2進数(BIN) | 8進数(OCT) | 10進数(DEC) | 16進数(HEX) |
|---|---|---|---|---|
| 2進数(BIN) | – | BIN2OCT | BIN2DEC | BIN2HEX |
| 8進数(OCT) | OCT2BIN | – | OCT2DEC | OCT2HEX |
| 10進数(DEC) | DEC2BIN | DEC2OCT | – | DEC2HEX |
| 16進数(HEX) | HEX2BIN | HEX2OCT | HEX2DEC | – |
たとえば「16進数を2進数に戻したい」なら、HEX(16進数)+ 2 + BIN(2進数)で「HEX2BIN関数」になる、という具合ですね。
BIN2HEXとHEX2BINを組み合わせる
逆変換のHEX2BINと組み合わせると、変換結果を元に戻して検証できます。
=HEX2BIN(BIN2HEX(A2))
A2の2進数を16進数に変換し、さらに2進数に戻すという流れです。元の値と一致すれば、変換が正しく行われた確認になります。
BIN2HEX関数をスプレッドシートで使うときのポイント
Excelとの違いはほぼない
BIN2HEX関数の仕様はExcelとGoogleスプレッドシートでほぼ同じです。引数や返り値の範囲、符号付き2進数の扱い、桁数指定のルールも共通ですよ。
既にExcelのBIN2HEX関数を使った経験があれば、スプレッドシートでもそのまま同じ感覚で使えます。ファイルをExcel形式で保存しても、BIN2HEX関数はそのまま動作しますよ。
ARRAYFORMULAで配列処理ができる
スプレッドシートならではの強みは、ARRAYFORMULA関数との組み合わせです。
=ARRAYFORMULA(BIN2HEX(A2:A100, 2))
A2からA100までの2進数データを一気に2桁の16進数に変換できます。Excelでも配列数式は使えますが、スプレッドシートのほうがシンプルに書けますね。
REGEXMATCHで入力値を検証できる
スプレッドシートは正規表現関数が充実しています。BIN2HEXの前に入力値チェックを挟むと、エラーを未然に防げます。
=IF(REGEXMATCH(A2, "^[01]{1,10}$"), BIN2HEX(A2, 2), "無効な2進数")
0と1だけで構成され、かつ10桁以内の文字列だけを変換対象にする、という数式です。大量データの前処理に便利ですね。
まとめ
BIN2HEX関数は、2進数を16進数に変換するエンジニアリング関数です。
ポイントを整理します。
- 構文は
=BIN2HEX(数値, [桁数])で、桁数は省略可能 - 入力は0と1だけの2進数。最大10桁まで対応
- 桁数を指定すると、先頭に0を補って文字数を揃えられる
- 10桁の場合は符号付き2進数として扱われ、最上位ビットが符号ビットになる
- 負の数の場合、桁数指定は無視されて常に10桁で返される
- #NUM!エラーの原因は「10桁超」「0と1以外の文字」「桁数不足」「桁数10超」
- 逆変換にはHEX2BIN関数を使う
- ExcelのBIN2HEX関数と仕様は共通で、ファイルをExcel形式で保存しても動作する
まずは =BIN2HEX("1010") で「A」が返ることを試してみてください。関数の動きがつかめたら、桁数指定や符号付き2進数も使いこなせるようになりますよ。
基数変換の姉妹記事として、2進数を10進数に変換するスプレッドシートのBIN2DEC関数の使い方や、Excelでの使い方を詳しく解説したExcelのBIN2HEX関数の使い方もあわせてご覧ください。
