広告

BIN2HEX関数の使い方|2進数を16進数に変換する

2021年5月31日

=BIN2HEX(符号付き2進数(数値)、[有効桁])

bin2hex_sample

BIN2HEX(バイナリィ・トゥ・ヘキサデシマル)関数は、符号付き2進数(数値)を符号付き16進数に変換する関数です

参考:BIN2HEX関数ドキュメントエディタヘルプ

BIN2HEX関数の使い方. 構文

BIN2HEX関数の構文は以下のとおりです。

=BIN2HEX(符号付き2進数(数値)、[有効桁])

BIN2HEX関数の構文内訳

引数 説明 注釈
数値 必ず指定- 符号付き16進数に変換する10ビットの符号付き2進数を指定します。 符号付き2進数-10進数に変換する10ビットの符号付き2進数を文字列として指定します。
※符号ビットとは、コンピューターで負の数値を扱うために付加するビット(bit:1か0の2値を区別するために必要な情報量)のこと。0なら正数、1なら負数を表す。
符号付き2進数の最上位ビットは符号ビットです。
この関数では、入力値の正の最大値は 0111111111、負の最小値は 1000000000 です。
符号付き2進数に有効な2進数を指定すると、自動的に適切な文字列の入力値に変換されます。たとえば、BIN2HEX(111111) と BIN2HEX("111111") はどちらも同じ結果7Fを返します。
有効桁 [省略可] - 結果の有効桁数を指定します。 この値が結果に含まれる有効桁数より大きい場合、合計桁数が有効桁に達するまで結果の左側にゼロの数字が付け加えられます。たとえば、BIN2HEX("1111111",8)は0000007Fの値を返します。
符号付き2進数の最上位ビットが 1 の場合(符号付き2進数が 1000000000 以上の場合)、この値は無視されます。

BIN2HEX関数の使い方・実行サンプル

BIN2HEX関数を実行するサンプル。

説明 数値 数式
2進数の110010を10進数に変換します。 110010 =BIN2HEX(B2)
2進数の111111111を10進数に変換します。 111111111 =BIN2HEX(B3)

各進数をBIN2HEX関数で算出した結果。

説明 数値 数式 結果
2進数の110010を10進数に変換します。 110010 =BIN2HEX(B2) 32
2進数の111111111を10進数に変換します。 111111111 =BIN2HEX(B3) 1FF

GIFで↓

bin2hex_sample

BIN2HEX関数の実行サンプル結果

画像でBIN2HEX実行サンプル結果を確認↓

bin2hex_kekka

BIN2HEX関数 × GASの使い方・サンプル

BIN2HEX関数をGASで利用する際の、かんたんなサンプルを作成してみました。

実装する表のサンプル。

置換対象の数値 置換後 結果
デフォは空白 デフォは空白 デフォは空白

実装するGAS

function BIN2HEX() {
var ss,sht,lastrw,val01,val02
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
lastrw = sht.getLastRow();
Logger.log(lastrw);
val01 = Browser.inputBox('16進数に置換する2進数0か1を入力して下さい(10ビットまで)',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
sht.getRange("A2").setValue("16進数に置換する数値は"+val01+"です");
}
// BIN2HEX関数をB2セルにセット
val02 = sht.getRange("B2").setFormula('=BIN2HEX('+val01+')');
 val03 =val02.getValue();
sht.getRange("C2").setValue("16進数は「"+val03+"」です");
}

実行結果をGIFで

BINHEX×GAS

OYAKUN
OYAKUN
inputBoxへ2進数の置換したい数値を入力することで、16進数へ置換することができます。(入力しなければキャンセルに)

BIN2HEX関数を使うときの注意点

注意1. 0と1以外の値を指定すると#NUM!エラーを返す

BIN2HEX関数は、引数に数値以外の値を指定すると#NUM!エラーを返します。

以下にサンプルを記載します。

数値 数式 結果
1100a =BIN2HEX(A2) #NUM!

bin2hex_error1

OYAKUN
OYAKUN
BIN2HEX関数に設置するA2セルの値に半角英字aを入れた時、BIN2HEX関数の算出結果は#NUM!を返していることが分かります。

ちなみに1と0以外の数値、例えば2進数ではない「2」や「3」を数値に指定しても#NUM!が返されます。

注意2. 数値が10文字以上だとNUM!エラーを返す

BIN2HEX関数では、数値に10文字以上の数値を指定した場合、#NUM!エラーを返します

以下にサンプルを記載します。

数値 数式 結果
11001111111 =BIN2HEX(A2) #NUM!

BIN2HEX_error2

OYAKUN
OYAKUN
A2セルの数値が10文字(10ビット)以上の11文字で指定されたため、BIN2HEX関数の結果は#NUM!を返していることが分かります。

注意3. BIN2HEXの値を数式に含むと誤りを返す可能性がある

BIN2HEX関数では数値3桁以内で16進数を求めたとき、数式に含めると10進数の計算結果を返します

数値 BIN2HEX↓ BIN2HEX + sample
111 =BIN2HEX(A2) 17

BIN2HEX_error3

BIN2HEX関数の使い方. Excelとスプシの違い

BIN2HEX関数は、ExcelとGoogleスプレッドシートで基本的な使い方に相違はありません

以下にGoogleスプレッドシートとExcelの解説についてまとめました。

スプレッドシート Excel
すべての 2 進数の値と同様に、0 と 1 の数字のみが有効です。BIN2HEX でこれ以外の数字を指定すると、#NUM! エラーが返されます。 数値に 2 進数以外の値、または 10 文字 (10 ビット) より多くの値を指定すると、エラー値 #NUM! が返されます
数値が負の数である場合、桁数の値は無視され、10 桁の 16 進数が返されます。
必要な桁数が指定した有効桁よりも大きい場合、#NUM! エラーが返されます。 計算結果の桁数が指定した桁数の値よりも大きくなる場合、エラー値 #NUM! が返されます。
桁数に整数以外の値を指定すると、小数点以下は切り捨てられます。
BIN2HEX 関数の結果を計算に使用する場合は、結果が 16 進数であることに注意してください。特に、Google スプレッドシートでは、非 10 進数を含まない結果(A-F)は自動変換されるため、セル A2 に 111(2 進数 100010001 と等しい 16 進数)を含み、B2 に =A2+9 などの数式を含む場合、結果は 120 となり、16 進法の計算では誤りとなります。 桁数に数値以外の値を指定すると、BIN2HEX によりエラー値 #VALUE! が返されます。
桁数に負の数を指定すると、エラー値 #NUM! が返されます。

Excelでは整数以外の値を数値に指定するとエラー値が#VALUE!になるのが、決定的な違いでしょうか。

また桁数に整数以外の値を指定することで、小数点以下は切捨てになる点についてはスプレッドシートに記載はありませんが同じく小数点以下は切捨てとなります。

OYAKUN
OYAKUN
BIN2HEX関数の使い方は、EXCEL・Googleスプレッドシートともに同じと考えて良さそうです。

BIN2HEX関数の使い方 まとめ

BIN2HEX関数の使い方でした。 有効に利用するには、

  • 数値には0または1を指定する
  • 数値は10文字(ビット)以上入れない
  • テキストを指定しない
  • 桁数に整数以外の値を指定しない
  • 桁数にマイナスを指定しない

といった感じですね。

BIN2HEX関数を使うことで、2進数から16進数へすぐに置換することができます。

OYAKUN
OYAKUN
BIN2DEC関数と合わせて使うことで、10進数や16進数がすぐに求めることができますね!

関連記事: BIN2DEC関数の使い方|2進数を10進数表記へ変換する
関連記事: BETAINV関数の使い方|β分布区間に対しβ累積分布の逆関数の値を返す
関連記事: BETADIST関数の使い方|ベータ分布関数で定義された特定値の確率を返す
関連記事: BASE関数の使い方|10 進数を別の底のテキスト表現に変換する