我现在有这样的一组数据要做CRC的校验算法,不知道应该怎么做,64 01 00 10 01 09 68 01 02 44 F3 ?? ??;从64到F3的需要算CRC校验算法的数据,?? ??为CRC校验的值,请应该怎么做这个程序,请给出例子,谢谢!分不够可以加分,只要能解决问题就行.

解决方案 »

  1.   

    声明一个字节数组,把CRC16返回的值赋值给它,…其它自行处理吧
    Function CRC16(data() As Byte) As String
       Dim CRC16Lo As Byte, CRC16Hi As Byte   'CRC寄存器
       Dim CL As Byte, CH As Byte        '多项式码&HA001
       Dim SaveHi As Byte, SaveLo As Byte
       Dim i As Integer
       Dim Flag As Integer
       CRC16Lo = &HFF
       CRC16Hi = &HFF
       CL = &H1
       CH = &HA0
       For i = 0 To UBound(data)
        CRC16Lo = CRC16Lo Xor data(i) '每一个数据与CRC寄存器进行异或
        For Flag = 0 To 7
         SaveHi = CRC16Hi
         SaveLo = CRC16Lo
         CRC16Hi = CRC16Hi \ 2      '高位右移一位
         CRC16Lo = CRC16Lo \ 2      '低位右移一位
         If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1
          CRC16Lo = CRC16Lo Or &H80   '则低位字节右移后前面补1
         End If              '否则自动补0
         If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或
          CRC16Hi = CRC16Hi Xor CH
          CRC16Lo = CRC16Lo Xor CL
         End If
        Next Flag
       Next i
       Dim ReturnData(1) As Byte
       ReturnData(0) = CRC16Hi       'CRC高位
       ReturnData(1) = CRC16Lo       'CRC低位
       CRC16 = ReturnData
      End Function