hex309’s diary

備忘録としてぼちぼちやります。VBAネタが多くなりそうです

基数変換

今回は、基数変換です。10進数をn進数に変換します(16進数まで)。
普通にループで処理すればいいんですけど、あえて再帰で。

'基数変換(10進数をn進数に変換する)
Private Sub RadixConversionTest()
    Debug.Print RadixConversion(777, 16)
End Sub

Private Function RadixConversion(ByVal num As Long, ByVal Radix As Long) As String
    Dim Quotient As Long
    Dim Remainder As Long
    
    Remainder = num Mod Radix
    Quotient = num \ Radix
    If Quotient = 0 Then
        RadixConversion = GetHexString(Remainder)
    Else
        RadixConversion = RadixConversion(Quotient, Radix) & GetHexString(Remainder)
    End If
End Function

Private Function GetHexString(ByVal num As Long) As String
    Dim temp As Variant
    temp = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
    GetHexString = temp(num)
End Function

ループ処理バージョンは、今度アップします(まだ書いてない)