给你一个例程看看如何:
Function CalCRC(BCRC As Integer, GP As Long, BDF As Long) As Long
Dim C1&, C2&
Dim A1%, PreC1&
Dim LeftValue%, A1Shift%
If BDF = 0 Then
CalCRC = 0
Exit Function
End If
A1 = (Len(Hex(BDF)) - 1) * 4
C1 = BDF * 2 ^ BCRC
LeftValue = Val("&H" & Mid(Hex(BDF), 1, 1))
If LeftValue >= 1 Then A1Shift = 1
If LeftValue >= 2 Then A1Shift = 2
If LeftValue >= 4 Then A1Shift = 3
If LeftValue >= 8 Then A1Shift = 4
A1 = A1 + (A1Shift - 1)
C2 = GP * 2 ^ A1
Do
PreC1 = C1
C1 = C1 Xor C2
Do
A1 = A1 - 1 '''
If C1 > PreC1 Then
C1 = PreC1 Xor (GP * 2 ^ A1)
Else
Exit Do
End If
Loop
C2 = GP * 2 ^ A1
Loop Until C1 <= GP
CalCRC = C1
End Function
Function CalCRC(BCRC As Integer, GP As Long, BDF As Long) As Long
Dim C1&, C2&
Dim A1%, PreC1&
Dim LeftValue%, A1Shift%
If BDF = 0 Then
CalCRC = 0
Exit Function
End If
A1 = (Len(Hex(BDF)) - 1) * 4
C1 = BDF * 2 ^ BCRC
LeftValue = Val("&H" & Mid(Hex(BDF), 1, 1))
If LeftValue >= 1 Then A1Shift = 1
If LeftValue >= 2 Then A1Shift = 2
If LeftValue >= 4 Then A1Shift = 3
If LeftValue >= 8 Then A1Shift = 4
A1 = A1 + (A1Shift - 1)
C2 = GP * 2 ^ A1
Do
PreC1 = C1
C1 = C1 Xor C2
Do
A1 = A1 - 1 '''
If C1 > PreC1 Then
C1 = PreC1 Xor (GP * 2 ^ A1)
Else
Exit Do
End If
Loop
C2 = GP * 2 ^ A1
Loop Until C1 <= GP
CalCRC = C1
End Function
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货