分類:[VB.NET/VB2005 以降]
環境はVB2010になります。
以下のパラメータを用いて、
CRCの計算のプログラムを作成しようとしておりますが、
入力反射と出力反射が理解できておらず、
入力反射と出力反射をあり→なしに変更する方法がわかりません。
ご教示ねがいます。(以下のプログラムは入力反射と出力反射がありのままの状態になっております。)
【パラメータ】
多項式 − 04C11DB7
初期値 − 0
入力反射 − なし
出力反射 − なし
出力XOR − 0
【プログラム】
'テーブル作成
Shared Sub InitTable()
Dim poly As UInteger = &HEDB88320UI
table = New UInteger(255) {}
Dim temp As UInteger = 0
For i As UInteger = 0 To table.Length - 1
temp = i
For j As Integer = 8 To 1 Step -1
If (temp And 1) = 1 Then
temp = CUInt((temp >> 1) Xor poly)
Else
temp >>= 1
End If
Next
table(i) = temp
Next
End Sub
'CRC取得
Public Shared Function GetCrc(ByVal bytes As Byte()) As UInteger
Dim crc As UInteger = &H0UI
For i As Integer = 0 To bytes.Length - 1
Dim index As Byte = CByte(((crc) And &HFF) Xor bytes(i))
crc = CUInt((crc >> 8) Xor table(index))
Next
Return crc
End Function
|