「ネットワーク機器の設定値やエラーコードが16進数で表示されているけど、ビット単位でON/OFFを確認したい…」
スプレッドシートでシステム管理や障害解析の記録をしていると、16進数の値を2進数のビット列に展開したい場面が出てきます。16進数の「F」が2進数で「1111」、「A」が「1010」というように手計算でやるのは、桁が増えると大変ですよね。
そんなときに役立つのがGoogleスプレッドシートのHEX2BIN関数です。16進数の文字列を指定するだけで、2進数のビット列にすぐ変換できますよ。
桁数を指定してゼロ埋めできるので、ビットフラグの一覧表を8ビット揃えで作ることも可能です。Excelとも互換性があるため、ファイルをやり取りする現場でも安心して使えますね。
この記事では、HEX2BIN関数の基本から桁数指定・ビットフラグ解析・エラー対処法まで解説します。ARRAYFORMULAでの一括変換や実務の活用例にも触れていきますよ。
HEX2BIN関数とは?
HEX2BIN関数(読み方: ヘックス・ツー・バイン)は、16進数を2進数に変換するエンジニアリング関数です。Googleスプレッドシートに標準搭載されていて、追加設定なしで使えます。
16進数は0〜9の数字とA〜Fのアルファベット(合計16種類)で数値を表す方法です。16進数の1桁は2進数の4桁に対応します。たとえば「F」は2進数で「1111」(4ビットすべて1)、「A」は「1010」です。
プログラミングやネットワーク設定では、コンパクトに表現できる16進数が好まれますが、ビット単位の解析には2進数の方がわかりやすい場面があります。HEX2BIN関数を使えば、この変換作業をスプレッドシートで自動化できますよ。
たとえば =HEX2BIN("FF") と入力すると、結果は「11111111」です。1バイト(8ビット)すべてが1であることが一目でわかります。
関数名の由来
関数名を分解すると、次の意味になります。
- HEX = Hexadecimal(ヘキサデシマル、16進数)
- 2 = to(〜へ)
- BIN = Binary(バイナリ、2進数)
つまり「HEXからBINへ」、16進数を2進数に変換するという意味がそのまま名前になっています。逆変換のBIN2HEX関数とセットで覚えると便利ですよ。
HEX2BIN関数でできること
HEX2BIN関数の特徴をまとめると、次のとおりです。
- 16進数を2進数の文字列に変換する
- 変換できる範囲は -512〜511(10ビット符号付き整数)
- 桁数を指定して先頭にゼロ埋めできる
- 負の数は2の補数(10ビット)で返される
- ExcelのHEX2BIN関数と仕様が同じで、ファイル共有でもそのまま動作する
NOTE
HEX2BIN関数はBIN2HEX関数(2進→16進)と逆の変換を行います。16進数と2進数を行き来する作業なら、両方覚えておくと効率的ですよ。
HEX2BIN関数の書き方(構文と引数)
基本構文
=HEX2BIN(数値, [桁数])
カッコの中に、変換したい16進数と、必要に応じて桁数を指定します。桁数は省略できますよ。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値 | 必須 | 2進数に変換したい16進数(最大10文字)。-512〜511に相当する値のみ有効 |
| 桁数 | 任意 | 結果の最小文字数(1〜10)。省略すると必要最小限の桁数で返される |
第1引数:変換する16進数
数値に指定できるのは、次の条件を満たす値だけです。
- 0〜9とA〜F(大文字・小文字どちらでもOK)のみで構成された文字列
- 変換結果が -512〜511 の範囲に収まるもの
- 正の数: 0〜1FF(16進数、10進数では 0〜511)
- 負の数: FFFFFFFE00〜FFFFFFFFFF(40ビット2の補数表現)
- 範囲外は #NUM! エラー
TIP
16進数の「1FF」は10進数の「511」(2進数の最大正の値)です。この3文字が入力できる最大の正の値になります。
第2引数:桁数(省略可)
桁数のルールは、次のとおりです。
- 1〜10の範囲で指定する
- 結果の桁数より小さい値を指定すると #NUM! エラー
- 0や負の値を指定するとエラーになる
- 負の数を変換した場合、桁数指定は無視されて常に10桁で返される
WARNING
HEX2BIN関数の戻り値は数値ではなく「文字列」です。そのまま計算に使おうとすると文字列として扱われます。2進数を10進数に戻して計算したい場合はBIN2DEC関数を使ってくださいね。
16進数と2進数の対応表
HEX2BIN関数の動きをイメージしやすくするため、1桁の16進数の対応を表にまとめました。
| 16進数 | 2進数(4桁) | 備考 |
|---|---|---|
| 0 | 0000 | ビット全OFF |
| 1 | 0001 | 最下位ビットのみON |
| 4 | 0100 | |
| 7 | 0111 | 下位3ビットON |
| 8 | 1000 | 最上位ビットのみON |
| 9 | 1001 | |
| A | 1010 | 10進数の10 |
| F | 1111 | ビット全ON |
16進数の1桁が2進数の4桁に対応しているので、複数桁の変換も機械的に行えます。たとえば「3F」は「0011 1111」(先頭ゼロは省略されて「111111」)になります。
HEX2BIN関数の出力では、先頭の不要なゼロは省略されます。8ビット固定で出力したい場合は桁数に「8」を指定してください。
HEX2BIN関数の基本的な使い方
直接入力で変換する
もっともシンプルな使い方から見ていきましょう。
=HEX2BIN("A")
結果は「1010」です。16進数の「A」(10進数の10)が2進数で表されました。
=HEX2BIN("FF")
結果は「11111111」です。1バイト(8ビット)すべてが1であることがわかります。
セル参照で変換する
実務では、セルに入っている16進数を変換する場面が多いです。A2のセルに「F0」が入っている場合は、次のように書きます。
=HEX2BIN(A2)
結果は「11110000」です。上位4ビットがON、下位4ビットがOFFの状態が一目でわかりますね。
ARRAYFORMULAで一括変換する
スプレッドシートならではの強みが、ARRAYFORMULA関数との組み合わせです。
=ARRAYFORMULA(HEX2BIN(A2:A10))
A2からA10までの16進数データを、1つの数式で一気に2進数に変換できます。
| A列: 16進数 | B列: 数式 | 結果 |
|---|---|---|
| 0 | =ARRAYFORMULA(HEX2BIN(A2:A6)) | 0 |
| A | ↓ | 1010 |
| F | ↓ | 1111 |
| FF | ↓ | 11111111 |
| 1FF | ↓ | 111111111 |
桁数を指定して出力する(ゼロ埋め)
HEX2BIN関数の第2引数「桁数」を使うと、出力の文字数を揃えられます。ビットフラグ解析でとくに便利な機能ですよ。
8ビット固定フォーマット出力
1バイト(8ビット)のデータを解析する場合は、8桁固定にしておくと各ビットの位置が揃って読みやすくなります。
=HEX2BIN("A", 8)
結果は「00001010」です。桁数を省略すると「1010」とだけ表示されますが、8を指定したことで先頭に「0000」が追加されました。
| 数式 | 結果 | 用途 |
|---|---|---|
| =HEX2BIN(“A”, 8) | 00001010 | 8ビット表示 |
| =HEX2BIN(“F”, 8) | 00001111 | 8ビット表示 |
| =HEX2BIN(“FF”, 8) | 11111111 | 8ビット表示(すべて1) |
| =HEX2BIN(“1”, 4) | 0001 | 4ビット表示 |
4ビット単位のグループ表示
16進数の1桁は4ビットに対応するため、4桁ずつ管理する場合は4桁固定が便利です。
=HEX2BIN("C", 4)
結果は「1100」です。
実務活用例:ビットフラグ解析
HEX2BIN関数の最も実用的な活用例が、ビットフラグの解析です。各ビットにON/OFFの設定を持つデータを解析する場面で役立ちます。
権限フラグのビット展開
アクセス権限などを1バイトのビットフラグで管理している場合、HEX2BIN関数で展開するとどのビットがONかすぐわかります。
たとえば権限値「3F」(16進数)は、次のように解析できます。
=HEX2BIN("3F", 8) → 00111111
下位6ビットがすべてONで、上位2ビットがOFFということがわかりました。
| 16進数 | 2進数(8桁) | 意味(例) |
|---|---|---|
| 00 | 00000000 | 権限なし |
| 01 | 00000001 | 読取のみ |
| 03 | 00000011 | 読取+書込 |
| 07 | 00000111 | 読取+書込+実行 |
| 3F | 00111111 | 下位6ビットON |
| FF | 11111111 | 全ビットON |
ネットワーク設定の確認
ネットワーク機器の設定値やステータスレジスタを16進数で管理している場合、HEX2BINで2進数展開するとビット単位の状態確認ができます。
=HEX2BIN(A2, 8)
A列にレジスタ値(16進数)が並んでいれば、B列に8ビットの状態を並べられます。
負の数の変換(2の補数・10ビット)
HEX2BIN関数で負の数に相当する16進数を変換すると、10ビット(10桁)の2の補数表現が返されます。
負の数に相当する16進数の変換例
=HEX2BIN("FFFFFFFFFF")
結果は「1111111111」(10桁すべて1)です。10ビット2の補数で -1 を表しています。
=HEX2BIN("FFFFFFFE00")
結果は「1000000000」です。10ビット2の補数の最小値(-512)を表しています。
| 入力(16進数) | 結果(2進数) | 10進数 |
|---|---|---|
| FFFFFFFFFF | 1111111111 | -1 |
| FFFFFFFE00 | 1000000000 | -512(最小値) |
| 1FF | 111111111 | 511(最大値) |
NOTE
負の数の変換では、第2引数の桁数指定は無視されます。常に10桁で返されるため、8桁を指定しても10桁の結果になりますよ。
エラーの種類と対処法
#NUM! エラー
次のいずれかに当てはまると #NUM! エラーになります。
- 変換結果が -512〜511 の範囲外(入力の16進数が範囲外)
- 桁数に 0 以下の値を指定した
- 桁数に結果の桁数より少ない値を指定した
=HEX2BIN("200") → #NUM!(511超の正の値)
=HEX2BIN("FF", 1) → #NUM!(FFは8桁、1桁は不足)
#VALUE! エラー
桁数に数値型でない値を指定すると #VALUE! エラーになります。
=HEX2BIN("F", "a") → #VALUE!
また、0〜9・A〜F(a〜f)以外の文字を含む16進数を指定すると #NUM! エラーになります。
=HEX2BIN("GG") → #NUM!(G は16進数では無効な文字)
エラー対処:IFERRORで包む
変換対象のデータが信頼できない場合は、IFERRORで包んでおくと安心です。
=IFERROR(HEX2BIN(A2, 8), "エラー")
A2に範囲外の値や無効な文字が入っていた場合でも、「エラー」と表示して処理が止まりません。
HEX2BIN関数とExcelの互換性
GoogleスプレッドシートのHEX2BIN関数は、ExcelのHEX2BIN関数と仕様が同じです。構文・引数・変換ルール・エラー条件のすべてが一致しています。
ExcelファイルをGoogleスプレッドシートで開いた場合でも、HEX2BIN関数はそのまま動作します。逆にスプレッドシートで作成した数式をExcelで開いても問題ありませんよ。
HEX2シリーズ3関数の比較
HEXシリーズの変換関数(HEX2から始まる)を比較すると、変換先と扱える範囲が異なります。
| 関数 | 変換先 | 有効範囲(16進→10進) | 桁数引数 | 戻り値型 |
|---|---|---|---|---|
| HEX2BIN | 2進数 | -512〜511 | あり | テキスト |
| HEX2OCT | 8進数 | -536,870,912〜536,870,911 | あり | テキスト |
| HEX2DEC | 10進数 | -549,755,813,888〜549,755,813,887 | なし | 数値 |
HEX2DECだけが桁数引数を持たず、戻り値も数値型です。四則演算に直接使えるのはHEX2DECだけなので、計算が必要な場合はHEX2BINで変換後にBIN2DECで10進数に戻すか、直接HEX2DECを使いましょう。
まとめ
HEX2BIN関数は、16進数を2進数に変換するエンジニアリング関数です。
- 基本構文:
=HEX2BIN(数値, [桁数]) - 有効範囲: -512〜511(16進数で FFFFFFFE00〜1FF)
- 桁数を指定するとゼロ埋めで出力できる
- 負の数は常に10桁(10ビット2の補数)で返される
- ビットフラグ解析・ネットワーク設定確認で特に活用される
=HEX2BIN(A2, 8) のように8桁固定で出力するパターンは、ビットフラグの一覧表作成で重宝しますよ。
逆変換にはBIN2HEX関数を使います。またDEC2BIN関数と組み合わせれば、10進数→2進数のパスも含めたさまざまな基数変換をスプレッドシート上で完結できますよ。
