⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module3.bas

📁 主要功能:接收和发送短信
💻 BAS
字号:
Attribute VB_Name = "Module3"
'Module 代码二

Private Sub Class_Initialize()

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

End Sub



'从通用性来讲,最好把字符串转换为字符数组,这样对传输中文和二进制都有好处
'例如:
'Dim b() As Byte
'Dim str As String, strBase64 As String
'
'str = "XXXXXXXXXXXXXXXXXXXXXXX"
'b() = StrConv(str, vbFromUnionCode)
'
'strBase64 = ConvertToBase64(b)
'
'Public Function ConvertToBase64(SourceData() As Byte) As String
'
'End Function
'
'用Ubound关键字可以得到数组的字节数
'
'由于转换的结果中只包含了“0-9”、“A-Z”、“a-z”、“+”、“/”、“=”,可以用String类型来存放
'另外,base64传输中文时有一个弱点,如果丢掉其中一个字节,就会变成满篇乱码
'

'上面代码对中文处理报错的问题,主要是因为中文以及一些远东字符是双字节字符,在做Base64编码时会出现问题,lenb,midb等函数需要在判断当前处理的字符或字符串是中文的时候再使用。


'给你一份对二进制数组进行编码的函数。然后你可以用WQ771211(SyanSea)的方法,将字符串转换成数组再编码。

Private Function Base64_EncodeBin(byteSource) As String
    Dim BASE64_TABLE(1 To 64) As Byte
    Dim j As Double
    Dim m As Double
    Dim n As Double
    Dim num As Double
    Dim intPos As Double
    Dim BASE64_STR As String
    Dim a() As Byte
    
    BASE64_STR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    
    For j = 1 To 64
        BASE64_TABLE(j) = Asc(Mid(BASE64_STR, j, 1))
    Next
    
    n = (UBound(byteSource) - UBound(byteSource) Mod 3)
    num = (n \ 3) * 4
    
    m = 0
    intPos = 0
    
    ReDim a(1 To num) As Byte
    
    For j = 1 To n Step 3
        
        m = m + 1
        a(m) = BASE64_TABLE((byteSource(j) \ 4) + 1)
        
        m = m + 1
        a(m) = BASE64_TABLE(((byteSource(j) Mod 4) * 16 + byteSource(j + 1) \ 16) + 1)
        
        m = m + 1
        a(m) = BASE64_TABLE(((byteSource(j + 1) Mod 16) * 4 + byteSource(j + 2) \ 64) + 1)
        
        m = m + 1
        a(m) = BASE64_TABLE((byteSource(j + 2) Mod 64) + 1)
        
        intPos = intPos + 4

        If (intPos Mod 76) = 0 Then
           num = num + 2
           ReDim Preserve a(1 To num) As Byte
           m = m + 1
           a(m) = Asc(vbCr)
           m = m + 1
           a(m) = Asc(vbLf)
        End If
        
        DoEvents
        
    Next j
    
    If Not (UBound(byteSource) Mod 3) = 0 Then
         If (UBound(byteSource) Mod 3) = 2 Then
            num = num + 4
            ReDim Preserve a(1 To num) As Byte
            m = m + 1
            a(m) = BASE64_TABLE((byteSource(j) \ 4) + 1)
            If m Mod 76 = 0 Then
                num = num + 2
                ReDim Preserve a(1 To num) As Byte
                m = m + 1
                a(m) = Asc(vbCr)
                m = m + 1
                a(m) = Asc(vbLf)
            End If
            m = m + 1
            a(m) = BASE64_TABLE((byteSource(j) Mod 4) * 16 + byteSource(j + 1) \ 16 + 1)
            If m Mod 76 = 0 Then
                num = num + 2
                ReDim Preserve a(1 To num) As Byte
                m = m + 1
                a(m) = Asc(vbCr)
                m = m + 1
                a(m) = Asc(vbLf)
            End If
            m = m + 1
            a(m) = BASE64_TABLE((byteSource(j + 1) Mod 16) * 4 + 1)
            If m Mod 76 = 0 Then
                num = num + 2
                ReDim Preserve a(1 To num) As Byte
                m = m + 1
                a(m) = Asc(vbCr)
                m = m + 1
                a(m) = Asc(vbLf)
            End If
            m = m + 1
            a(m) = Asc("=")
         ElseIf (UBound(byteSource) Mod 3) = 1 Then
            num = num + 3
            ReDim Preserve a(1 To num) As Byte
            m = m + 1
            a(m) = BASE64_TABLE(byteSource(j) \ 4 + 1)
            If m Mod 76 = 0 Then
                num = num + 2
                ReDim Preserve a(1 To num) As Byte
                m = m + 1
                a(m) = Asc(vbCr)
                m = m + 1
                a(m) = Asc(vbLf)
            End If
            m = m + 1
            a(m) = BASE64_TABLE((byteSource(j) Mod 4) * 16 + 1)
            If m Mod 76 = 0 Then
                num = num + 2
                ReDim Preserve a(1 To num) As Byte
                m = m + 1
                a(m) = Asc(vbCr)
                m = m + 1
                a(m) = Asc(vbLf)
            End If
            m = m + 1
            a(m) = Asc("==")
         End If
    End If
    ReDim Preserve a(1 To m) As Byte
    
    Base64_EncodeBin = StrConv(a, vbUnicode)
    
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -