代码
Dim Data(6) As Integer
Dim a As Long
Dim crc_reg As Long
Function crc16(Data, length)
Dim i, j As Integer
Dim b As Long
b = &HA001
i = 0
crc_reg = &HFFFF
Do While length > 0
crc_reg = (crc_reg Xor Data(i))
If crc_reg < 0 Then
crc_reg = 65536 + crc_reg
End If
i = i + 1
length = length - 1
For j = 0 To 7 Step 1
If (crc_reg And 1) Then
crc_reg = (((crc_reg \ 2) Xor b) And &HFFFF)
'crc_reg = crc_reg ^ b
Else
crc_reg = (crc_reg \ 2) And &HFFFF
End If
If (crc_reg < 0) Then
crc_reg = 65536 + crc_reg
End If
Next j
Loop
End Function
Private Sub Form_Load()
Data(0) = &H64
Data(1) = &H6
Data(2) = &H0
Data(3) = &HD
Data(4) = &H4
Data(5) = &H4C
a = crc16(Data, 6)
MsgBox (crc_reg)
End Sub
运行
修改代码
Private Sub Form_Load()
Data(0) = &H64
Data(1) = &H3
Data(2) = &H0
Data(3) = &H0
Data(4) = &H0
Data(5) = &H1
a = crc16(Data, 6)
MsgBox (crc_reg)
End Sub
运行