進数変換リンク

他の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進数へ変換する

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

8進数から10進数に変換するには、8進数の各桁に8の乗数を掛けて10進数に変換し、各桁の変換後の10進数を連結することで変換が完了です。

このときの8の乗数は第一位が0で、左に行くにしたがって1ずつ上がります。

例:8進数文字列”37″を10進数に変換する
右側から1文字ずつ取得すると「”3″、”7″」になります。これを1文字ずつ10進数に変換します。

“3”に8の1乗(=8)を掛けて、10進数”24″に変換。
“7”に8の0乗(=1)を掛けて、10進数”7″に変換。
24+7で、10進数の31になります。

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

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

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

コードは8進数から10進数への変換の考え方をそのまま書いているのでコメントの内容で処理は理解できると思います。

難しい点としたら乗数の^はあまり使わない演算子なところぐらいでしょうか。

使い方

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

実行結果
1 1
2 2
3 3
4 4
5 5
6 6
7 7
10 8
11 9
12 10
13 11
14 12
15 13
16 14
17 15
20 16
21 17
22 18
23 19
24 20
25 21
26 22
27 23
30 24
31 25
32 26
33 27
34 28
35 29
36 30
37 31
40 32
41 33
42 34
43 35
44 36
45 37