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 调试过,可用
'初始化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
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
调试过,可用
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