将intdest中的元素4位为一组进行处理。
读取一位strsrc,从1到F判断,分别对intdest中的4位进行置位。
共循环4次就可以了。

解决方案 »

  1.   

    Dim strSrc As String
    Dim intDest(16) As Integer
    Dim value As String
    Private Sub haha()
        value = ""
        For i = 0 To 3
            Select Case intDest(i * 4) & intDest(i * 4 + 1) & intDest(i * 4 + 2) & intDest(i * 4 + 3)
                Case "0000": value = value + "0"
                Case "0001": value = value + "1"
                Case "0010": value = value + "2"
                Case "0011": value = value + "3"
                Case "0100": value = value + "4"
                Case "0101": value = value + "5"
                Case "0110": value = value + "6"
                Case "0111": value = value + "7"
                Case "1000": value = value + "8"
                Case "1001": value = value + "9"
                Case "1010": value = value + "A"
                Case "1011": value = value + "B"
                Case "1100": value = value + "C"
                Case "1101": value = value + "D"
                Case "1110": value = value + "E"
                Case "1111": value = value + "F"
            End Select
        Next i
    End Sub
    调试过,可用
      

  2.   

    '初始化Mask
    Private BitAndMask(0 to 7) as Integer
    Dim I as longFor I=0 to 7
        BitAndMask(I)=2^I
    Next I
    '赋值
    Dim strSrc As string
    Dim TempInt as Integer
    Dim intDest(0 to 15) As integerstrSrc = "FFFF"For I=0 to 1
    TempInt=Val("&H"+Mid$(strSrc,I*2,2))
    For J=0 to 7
        intDest(I*8+J)=TempInt And BitAndMask(J)
    Next J
    Next I没有比这更快的算法了要注意“Dim intDest(16) As integer”并不是建立有16个元素的数组,因为数组的默认下界是0,而VB的数组声明与C不同,C里面数组的16的确是表示有16个元素,而VB是表示上界是16