進数変換リンク

他のn進数からn進数への変換は以下をご参照ください。

VBAで2進数から8進数へ変換する
VBAで2進数から10進数へ変換する
VBAで2進数から16進数へ変換する
VBAで8進数から2進数へ変換する
VBAで8進数から10進数へ変換する
VBAで8進数から16進数に変換する
VBAで10進数から2進数へ変換する
VBAで10進数から8進数へ変換する
VBAで10進数から16進数へ変換する
VBAで16進数から2進数へ変換する
VBAで16進数から8進数へ変換する
VBAで16進数から10進数へ変換する

2進数から10進数へ変換する考え方

VBAでは2進数を表現するには文字列を扱います。

2進数から10進数に変換するには、2進数文字列を1文字ずつ切り出し、その数字に2の桁位置の乗数を掛けて、各桁を加算することで変換できます。

“101”であれば、1×2の2乗+0×2の1乗+1×2の0乗→1×4+0×2+1×1→4+0+1→5、となります。

以下のコードはこの考え方を実装しています。

2進数から8進数に変換する関数

上の説明をコードにした関数が以下になります。

第一引数に変換元となる2進数文字列を指定し、第二引数が変換後の10進数文字列が返却されます。

例えば第一引数に”1111″とセットした場合は第二引数に”15″がセットされて関数が終了します。

コードは特殊なことはないので内容はコメントの通りです。

1文字ずつ2のn乗数を掛けて足し合わせた結果を文字列にしています。

使い方

2進数文字列をいくつか持つ配列を作って、ループでBinToDec関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。

実行結果
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9