進数変換リンク
他の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進数へ変換する
16進数から8進数へ変換する考え方
16進数から8進数への変換は、一度10進数に変換してからそれを8進数に変換する方法を行います。
16進数から10進数への変換は、16進数文字列を「”&H1A”」のように頭に”&H”を付けて、それをVal関数で渡すことで変換できます。
10進数から8進数への変換はVBAのOct関数を利用します。
16進数から8進数に変換する関数
第一引数に変換元となる16進数文字列を指定し、第二引数に変換後の8進数文字列が返却されます。
例えば第一引数に”1B”とセットした場合は第二引数に”33″がセットされて関数が終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
'// 引数1 (IN) :16進数文字列 '// 引数2 (OUT) :変換後の8進数文字列 Sub HexToOct(a_sHex As String, a_sOct As String) '// 引数の16進数文字列が未設定の場合は処理せずに抜ける If (a_sHex = "") Then Exit Sub End If Dim sOct As String '// 8進数文字列 Dim dDec As Double '// 10進数値 '// 10進数値に変換 dDec = Val("&H" & a_sHex) '// 8進数文字列に変換 sOct = Oct(CStr(dDec)) a_sOct = sOct End Sub |
使い方
16進数文字列をいくつか持つ配列を作って、ループでHexToOct関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub HexToOctTest() Dim a As String Dim b As String Dim ar ar = Array("FFf", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25") Dim i For i = 0 To UBound(ar) a = ar(i) Call HexToOct(a, b) Debug.Print a & " " & b Next End Sub |
実行結果
FFf 7777
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 11
A 12
B 13
C 14
D 15
E 16
F 17
10 20
11 21
12 22
13 23
14 24
15 25
16 26
17 27
18 30
19 31
1A 32
1B 33
1C 34
1D 35
1E 36
1F 37
20 40
21 41
22 42
23 43
24 44
25 45