読者です 読者をやめる 読者になる 読者になる

hex309’s diary

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

基数変換(ループバージョン)

基数変換のループバージョンです。
以前紹介した再帰バージョンはコチラ。
hex309.hatenablog.com


今回も16進数までの対応です。16進数の文字列への変換を行うGetHexStringプロシージャは、再帰バージョンと同じです。
まぁ、こっちのほうがシンプルですよね。

'基数変換(10進数をn進数に変換する)ループバージョン
Private Sub RadixConversionLoopTest()
    Debug.Print RadixConversionLoop(777, 16)
End Sub

Private Function RadixConversionLoop(ByVal num As Long, ByVal Radix As Long) As String
    Dim Quotient As Long
    Dim Remainder As Long
    Dim Answer As String
    Quotient = num
    Do
        Remainder = Quotient Mod Radix
        Quotient = Quotient \ Radix
        Answer = GetHexString(Remainder) & Answer
    Loop Until Quotient = 0
    RadixConversionLoop = Answer
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