본문 바로가기

Window Programming/VB

정수를 64진법까지 변환해주는 진법변환 모듈

01 : Const BaseString As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
02 : Public Function ChangeNumberBase(ByVal Num As Long, ByVal Base As Byte) As String
03 : On Error Goto Error
04 :      If Base > Len(BaseString) Then Base = Len(BaseString)
05 :     
06 :      Dim tmp As Long
07 :      tmp = Num
08 :      ChangeNumberBase = ""
09 :      Do
10 :           ChangeNumberBase = ChangeNumberBase & Mid$(BaseString, (tmp Mod Base) + 1, 1)
11 :           tmp = Int(tmp / Base)
12 :           If tmp < Base Then
13 :                ChangeNumberBase = ChangeNumberBase & Mid$(BaseString, (tmp Mod Base) + 1, 1)
14 :                Exit Do
15 :           End If
16 :      Loop
17 :     
18 :      ChangeNumberBase = StrReverse$(ChangeNumberBase)
19 :     
20 :      Exit Function
21 : Error:
22 :      ChangeNumberBase = Num
23 : End Function
24 : Public Function ChangeNumber10(ByVal Num As String, ByVal Base As Byte) As Long
25 : On Error Goto Error
26 :      If Base > Len(BaseString) Then Base = Len(BaseString)
27 :     
28 :      Dim tmp1 As String
29 :      Dim tmp2 As Long
30 :      Dim i As Long
31 :      tmp1 = StrReverse$(Num)
32 :      ChangeNumber10 = 0
33 :      For i = 1 To Len(tmp1)
34 :           tmp2 = (InStr(BaseString, Mid$(tmp1, i, 1)) - 1) * Base ^ (i - 1)
35 :           ChangeNumber10 = ChangeNumber10 + tmp2
36 :      Next
37 :     
38 :      Exit Function
39 : Error:
40 :      ChangeNumber10 = 0
41 : End Function
42 : 'ChangeNumberBasetoBase(문자열, 원래진법, 바꿀진법)
43 : Public Function ChangeNumberBaseToBase(ByVal Num As String, ByVal Base1 As String, ByVal Base2 As String) As String
44 : On Error Goto Error
45 :      Dim tmp As Long
46 :      tmp = ChangeNumber10(Num, Base1)
47 :      ChangeNumberBaseToBase = ChangeNumberBase(tmp, Base2)
48 :     
49 :      Exit Function
50 : Error:
51 :      ChangeNumberBaseToBase = Num
52 : End Function