例如如下的byte数组
Dim Buffer(15) as byte
从0-15的内容是
C1,04,00,08,C1,05,0A,0B,0C,C2,00,07,A1,A2,A3,A4
我想根据这个byte数组得到下面的结果,字符串获byte数组都行。
C1,04,00,08
C1,05,0A,0B,0C
C2,00,07,A1,A2,A3,A4在这里面C1和C2为标识,如果标识是C1那C1后面的一位就是这一段的长度。如果是C2那第3位就是这一段的长度。
所以上面的第一组是C1,04,就取Buffer(15)的Buffer(0) - Buffer(3) 这4位
第二组是C1,05,就取Buffer(4) - Buffer(8)这一段。寻求一个比较好的方法,希望高手赐教。

解决方案 »

  1.   

    基本上就是这样啦,用好字符串函数
    Dim Buffer(0 To 15) As BytePrivate Sub Form_Load()
        Buffer(0) = &HC1
        Buffer(1) = &H4
        Buffer(2) = &H0
        Buffer(3) = &H8
        Buffer(4) = &HC1
        Buffer(5) = &H5
        Buffer(6) = &HA
        Buffer(7) = &HB
        Buffer(8) = &HC
        Buffer(9) = &HC2
        Buffer(10) = &H0
        Buffer(11) = &H7
        Buffer(12) = &HA1
        Buffer(13) = &HA2
        Buffer(14) = &HA3
        Buffer(15) = &HA4    Dim intI As Integer
        Dim intPos1 As Integer, intPos2 As Integer, intPos3 As Integer
        Dim blnFirst As Boolean
        Dim ArrA1() As Byte, ArrA2() As Byte, ArrA3() As Byte
        
        For intI = 0 To 15
            If Buffer(intI) = &HC1 Then
                If Not blnFirst Then
                    intPos1 = intI
                    blnFirst = True
                Else
                    intPos2 = intI
                End If
            End If
            If Buffer(intI) = &HC2 Then
                intPos3 = intI
                Exit For
            End If
        Next
        
        ReDim ArrA1(0 To intPos2 - intPos1 - 1)
        For intI = LBound(ArrA1) To UBound(ArrA1)
            ArrA1(intI) = Buffer(intPos1 + intI)
            Debug.Print ArrA1(intI);
        Next
        
        Debug.Print
        
        ReDim ArrA2(0 To intPos3 - intPos2 - 1)
        For intI = LBound(ArrA2) To UBound(ArrA2)
            ArrA2(intI) = Buffer(intPos2 + intI)
            Debug.Print ArrA2(intI);
        Next
        
        Debug.Print
        
        ReDim ArrA3(0 To UBound(Buffer) - intPos3 - 1)
        For intI = LBound(ArrA2) To UBound(ArrA2)
            ArrA3(intI) = Buffer(intPos3 + intI)
            Debug.Print ArrA3(intI);
        Next
    End Sub