你看看二进制和十进制是怎么倒的,就能想像其他进制了

解决方案 »

  1.   

    任意进制(2~36)转换:Public Function Num10toN(ByVal Num As Long, Optional ByVal N As Long = 16, Optional ByVal AddNum As Long = 0) As String
        Dim I As Long, J As Long, K As Long
        
        
        
        If N < 2 Or N > 36 Then Exit Function
        If N + AddNum > 36 Then Exit Function
        
        
        If Num = 0 Then
            Num10toN = "0"
            Exit Function
            
        End If
        
        Static FirstRun As Boolean
        Static NumChar(0 To 35) As String * 1
        
        If FirstRun = False Then
            For I = 0 To 9
                NumChar(I) = CStr(I)
            Next I
            For I = 0 To 25
                NumChar(I + 10) = Chr(Asc("A") + I)
            Next I
            
            FirstRun = True
            
        End If
        
        Dim TempNum As Long
        Dim TempStr As String
        
        TempNum = Num And &H7FFFFFFF '不考虑符号位
        
        TempStr = Space(Log(Num) / Log(N) + 1)
        
        I = Len(TempStr)
        Do While TempNum > 0
            J = TempNum Mod N
            Mid(TempStr, I, 1) = NumChar(J + AddNum)
            I = I - 1
            TempNum = (TempNum - J) \ N
            
        Loop
        
        I = I + 1
        If N = 26 And AddNum = 10 And Num >= 26 Then Mid(TempStr, I) = Chr(Asc(Mid(TempStr, I)) - 1)
        
        Num10toN = Mid(TempStr, I)
        
    End Function