Base64

发表于:2007-06-30来源:作者:点击数: 标签:
快过生蛋节了,俺送大家一段Base64的程序,入口函数是Encode(bytFile() as Byte),bytFile是一个Byte型的数组,返回一个字符串。对了,传入的数组不大于32767个元素(这一点没做什么较验,多了会出错哦!嘻嘻) --------------------------------------------
快过生蛋节了,俺送大家一段Base64的程序,入口函数是Encode(bytFile() as Byte),bytFile是一个Byte型的数组,返回一个字符串。对了,传入的数组不大于32767个元素(这一点没做什么较验,多了会出错哦!嘻嘻)
----------------------------------------------------------
Private m_bytIndex(0 To 63) As Byte


‘’****************************************************
‘’*                                                  *
‘’*-- To encode file data with Base64 method.        *
‘’*                                                  *
‘’****************************************************
Public Function Encode(bytFile() As Byte) As String
    
    Dim i As Long, j As Long
    Dim strRslt As String
    
    i = 0
    
    For i = 0 To UBound(bytFile) - ((UBound(bytFile) + 1) Mod 3) Step 3
        strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(i) And 252) / 4)))
        strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(i) And 3) * 16 + (bytFile(i + 1) And 240) / 16)))
        strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(i + 1) And 15) * 4 + (bytFile(i + 2) And 192) / 64)))
        strRslt = strRslt + Chr(m_bytIndex(Int(bytFile(i + 2) And 63)))
    Next i
    
    Select Case ((UBound(bytFile) + 1) Mod 3)
        Case 1
            strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(UBound(bytFile)) And 252) / 4)))
            strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(UBound(bytFile)) And 3) * 16)))
            strRslt = strRslt + "=="
        Case 2
            strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(UBound(bytFile) - 1) And 252) / 4)))
            strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(UBound(bytFile) - 1) And 3) * 16 + (bytFile(UBound(bytFile)) And 240) / 16)))
            strRslt = strRslt + Chr(m_bytIndex(Int((bytFile(UBound(bytFile)) And 15) * 4)))
            strRslt = strRslt + "="
    End Select
    Encode = strRslt
    
End Function


‘’****************************************************
‘’*                                                  *
‘’*-- Class Initialize to initialize the array of    *
‘’*   base64 coding.                                 *
‘’*                                                  *
‘’****************************************************
Private Sub Class_Initialize()
    
    m_bytIndex(0) = 65 ‘’Asc("A")
    m_bytIndex(1) = 66 ‘’Asc("B")
    m_bytIndex(2) = 67 ‘’Asc("C")
    m_bytIndex(3) = 68 ‘’Asc("D")
    m_bytIndex(4) = 69 ‘’Asc("E")
    m_bytIndex(5) = 70 ‘’Asc("F")
    m_bytIndex(6) = 71 ‘’Asc("G")
    m_bytIndex(7) = 72 ‘’Asc("H")
    m_bytIndex(8) = 73 ‘’Asc("I")
    m_bytIndex(9) = 74 ‘’Asc("J")
    m_bytIndex(10) = 75 ‘’Asc("K")
    m_bytIndex(11) = 76 ‘’Asc("L")
    m_bytIndex(12) = 77 ‘’Asc("M")
    m_bytIndex(13) = 78 ‘’Asc("N")
    m_bytIndex(14) = 79 ‘’Asc("O")
    m_bytIndex(15) = 80 ‘’Asc("P")
    m_bytIndex(16) = 81 ‘’Asc("Q")
    m_bytIndex(17) = 82 ‘’Asc("R")
    m_bytIndex(18) = 83 ‘’Asc("S")
    m_bytIndex(19) = 84 ‘’Asc("T")
    m_bytIndex(20) = 85 ‘’Asc("U")
    m_bytIndex(21) = 86 ‘’Asc("V")
    m_bytIndex(22) = 87 ‘’Asc("W")
    m_bytIndex(23) = 88 ‘’Asc("X")
    m_bytIndex(24) = 89 ‘’Asc("Y")
    m_bytIndex(25) = 90 ‘’Asc("Z")
    m_bytIndex(26) = 97 ‘’Asc("a")
    m_bytIndex(27) = 98 ‘’Asc("b")
    m_bytIndex(28) = 99 ‘’Asc("c")
    m_bytIndex(29) = 100 ‘’Asc("d")
    m_bytIndex(30) = 101 ‘’Asc("e")
    m_bytIndex(31) = 102 ‘’Asc("f")
    m_bytIndex(32) = 103 ‘’Asc("g")
    m_bytIndex(33) = 104 ‘’Asc("h")
    m_bytIndex(34) = 105 ‘’Asc("i")
    m_bytIndex(35) = 106 ‘’Asc("j")
    m_bytIndex(36) = 107 ‘’Asc("k")
    m_bytIndex(37) = 108 ‘’Asc("l")
    m_bytIndex(38) = 109 ‘’Asc("m")
    m_bytIndex(39) = 110 ‘’Asc("n")
    m_bytIndex(40) = 111 ‘’Asc("o")
    m_bytIndex(41) = 112 ‘’Asc("p")
    m_bytIndex(42) = 113 ‘’Asc("q")
    m_bytIndex(43) = 114 ‘’Asc("r")
    m_bytIndex(44) = 115 ‘’Asc("s")
    m_bytIndex(45) = 116 ‘’Asc("t")
    m_bytIndex(46) = 117 ‘’Asc("u")
    m_bytIndex(47) = 118 ‘’Asc("v")
    m_bytIndex(48) = 119 ‘’Asc("w")
    m_bytIndex(49) = 120 ‘’Asc("x")
    m_bytIndex(50) = 121 ‘’Asc("y")
    m_bytIndex(51) = 122 ‘’Asc("z")
    m_bytIndex(52) = 48 ‘’Asc("0")
    m_bytIndex(53) = 49 ‘’Asc("1")
    m_bytIndex(54) = 50 ‘’Asc("2")
    m_bytIndex(55) = 51 ‘’Asc("3")
    m_bytIndex(56) = 52 ‘’Asc("4")
    m_bytIndex(57) = 53 ‘’Asc("5")
    m_bytIndex(58) = 54 ‘’Asc("6")
    m_bytIndex(59) = 55 ‘’Asc("7")
    m_bytIndex(60) = 56 ‘’Asc("8")
    m_bytIndex(61) = 57 ‘’Asc("9")
    m_bytIndex(62) = 43 ‘’Asc("+")
    m_bytIndex(63) = 47 ‘’Asc("/")

End Sub

原文转自:http://www.ltesting.net