VB 各種進制相互轉換大全(二)

 

更好的代碼:
Public Function cTon(ByVal sInNum As String, ByVal n As Double) As String
轉換至n進制(n<=36)
  Dim dx As Double, iX As Long
  Const sNum As String = "0123456789ABCDEFGHIJKLMNoPQRSTUVWXYZ"
 
  If Not (Len(sInNum) > 0 And Len(sInNum) <= 15 And n > 0 And n <= 36) Then Exit Function
 
  dx = CDbl(sInNum)
  Do While dx > 0
    iX = dx - Int(dx / n) * n + 1           iX = dX Mod n +1 用Mod會溢出
    cTon = Mid$(sNum, iX, 1) & cTon
    dx = Int(dx / n)
  Loop
End Function

Public Function nToc(ByVal sInNum As String, ByVal n As Double) As Double
n進制轉換至10進制(n<=36)
  Dim iX As Long, iY As Long
  Const sNum As String = "123456789ABCDEFGHIJKLMNoPQRSTUVWXYZ"
 
  If (n >= 2 And n <= 36) Then
    iY = Len(sInNum)
    For iX = 0 To iY - 1
      nToc = nToc + (InStr(1, sNum, Mid$(sInNum, iY - iX, 1), vbTextCompare)) * (n ^ iX)
    Next iX
  End If
End Function

發佈了101 篇原創文章 · 獲贊 1 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章