Access911.net   |   a9BBS   |   OTaA System  
  搜索文章︰  
Access911歡迎您光臨  
   主頁      上傳      简体版       論壇     
設為首頁  |  加入收藏   
  
你現在的位置︰文章索引 -> 文章分類 -> 函數  
 首頁|  近日更新|  下載  |  文章索引  |  搜索|  朮語|  承接工程|  
 
系統正在加載內容,請耐心等待...
 
 查詢
 窗体
 報表
 
 
 VBA
 函數
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 發布
 OA
 ASP/ASP.NET
 其他語言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用軟件
 參考文檔
 業主作品
 网友大作
 
 
友情鏈接
 access911.net
 AppleVB
 我家网
 911靜態資料2
 a9 BBS
 MCSE技朮論壇
 CSharp911.net
 BBS新聞列表
 911靜態資料
 911搜全國公交線路
 Office中國
 Java 編程資料站
 Access開發在線
 CSDN
 MS Support
 access愛好者
 設計在線
 oaup
 
訪問人次
 1138909
 
站長 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 訂閱

顯示附加信息 >>>

新手來看︰如何進行二進制到六十二進制向十進制的轉換?

作者︰cg1  摘自︰access911.net  ︰cg1  更新日期︰2003-12-21  瀏覽人次︰

 

問題︰


新手來看︰如何進行二進制到六十二進制向十進制的轉換?《函數》
如何進行2進制到62進制的轉換?
10進制轉16進制用 HEX 函數,那么倒過來哪?
十六進制轉十進制用什么函數?

 

回答︰


不需要函數,請參考以下代碼︰
Dim x As Double
x = "&H" & "a1"
Debug.Print x

可以用以下函數︰
Private Function C16To10(strA As String) As Double
    Dim a As Double
    Dim b As String
    Dim c As Double
    Dim l As Integer
    Dim i As Long
    l = Len(strA)
    For i = 1 To l
        b = Mid(strA, i, 1)
        Select Case b
            Case "A"
                b = 10
            Case "B"
                b = 11
            Case "C"
                b = 12
            Case "D"
                b = 13
            Case "E"
                b = 14
            Case "F"
                b = 15
        End Select
        c = c + b * 16 ^ (l - 1)
        l = l - 1
    Next
    C16To10 = c
    Debug.Print C16To10
End Function

編寫了一個擴展函數,可以擴展到整個字符集
Function test()
    Debug.Print N10toC62(576, 35)
    Debug.Print C62ToN10("gg", 35)
End Function

Function C62ToN10(ByVal strA As String, Optional ByVal bt As Byte) As Double
'本函數用于將 2 8 16 36 62 進制字符串轉換為 10 進制數值
'請注意,本函數的輸入參數是區分大小寫的,36進制以及以下,應該全部轉換為大寫
    
    '下列進制,如果有必要,可以擴展到整個字符集,
    '也就是你只要輸入一個字符,就可以代表上万位

    
    If bt < 2 Or bt > 62 Then
        bt = 16
        '默認為 16 進制
    End If
    '2進制 0-1
    '8進制 0-7          可以用 clng("&O71") 代替
    '16進制 0-9 A-F     可以用 clng("&Hf1") 代替
    '36進制 0-9 A-Z
    '62進制 0-9 A-Z a-z
    '都不對,就用16進制,如果輸入數據不符合要求,則出錯

    
    If bt <= 36 Then
        strA = UCase(strA)
        '小于等于 36 進值時應該全部轉換為大寫
    End If
    
    Dim b As Long
    Dim b1 As String
    Dim c As Double
    Dim l As Integer
    Dim i As Integer
    l = Len(strA)
    For i = 1 To l
        b1 = Mid(strA, i, 1)
        Select Case Asc(b1)
        Case 48 To 57
            b = CLng(b1)
        Case 65 To 90
            b = Asc(b1) - 55
        Case 97 To 122
            b = Asc(b1) - 61
        End Select
        c = c + b * bt ^ (l - 1)
        l = l - 1
    Next
    C62ToN10 = c
End Function

Function N10toC62(ByVal b As Long, Optional ByVal bt As Byte) As String
'以下函數將10進制數值根據要求轉換為
'2 8 16 36 62 進制字符串
'請注意,本函數的輸出結果是區分大小寫的

    If bt < 2 Or bt > 62 Then
        bt = 16
        '默認為 16 進制
    End If
    '2進制 0-1
    '8進制 0-7          可以用 OCT 函數代替
    '16進制 0-9 A-F     可以用 HEX 函數代替
    '36進制 0-9 A-Z
    '62進制 0-9 A-Z a-z
    '都不對,就用16進制,如果輸入數據不符合要求,則出錯

    
    Dim a As Long
    Dim a1 As String
    Dim s As String
    Do
        a = b Mod bt
        Select Case a
        Case 0 To 9
            a1 = CStr(a)
        Case 10 To 35
            a1 = Chr(a + 55)
        Case 36 To 61
            a1 = Chr(a + 61)
        End Select
        s = a1 & s
        b = b \ bt
    Loop Until b = 0
    N10toC62 = s
End Function



 

本站文章旨在為該問題提供解決思路及關鍵性代碼,并不能完成應該由网友自己完成的所有工作,請网友在仔細看文章并理解思路的基礎上舉一反三、靈活運用。

access911.net 原創文章,作者本人對文章保留一切權利。
如需轉載必須征得作者同意并注明本站鏈接


 

 
相關文章
     數字轉二進制文本,十進制二進制互轉
     數字轉二進制文本,十進制二進制互轉
     如何將嵌入ole字段的文件保存為硬盤上的某個文件?
     如何用VBA轉換ACCESS97數據庫到2000 2003 2007格式?
     如何實現行列的轉換?有關交叉表的應用
     關于單位“緹”与“像素”的轉換,以及緹与其他單位(例如︰厘米)之間的轉換
     如何計算兩個時間間隔并轉換成“N天N小時N分N秒”這樣的形式?
     VBA与T-SQL之間的函數比較;SQL Server的SQL語句如何在ACCESS中使用?
     SQL SERVER 与ACCESS、EXCEL的數據轉換
 
評論
     查看或發表更多的評論,請單擊這里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期︰2000年4月2日  |  設計施工︰陳格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陳格 保留所有權利