请问各位:
一条指令,12个字节:0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
给出的CRC16-CCITT校验码为:0xea,0x10
我用下面的程序,为何算出的结果不一样,为什么?谢谢!Function CRC16(data() As Byte) As String
   Dim CRC16Lo As Byte, CRC16Hi As Byte   'CRC寄存器
   Dim CL As Byte, CH As Byte        
   Dim SaveHi As Byte, SaveLo As Byte
   Dim i As Integer
   Dim Flag As Integer
   CRC16Lo = &HFF
   CRC16Hi = &HFF
   CL = &H08                'crc-ccitt反转多项式码&H8408
   CH = &H84
   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