Jimbo0915 Geschrieben 27. März 2014 Geschrieben 27. März 2014 (bearbeitet) Hi Leute, ich sitze gerade dabei eine CRC (CRC16 CCITT) Implementierung umzusetzen. Ich habe allerdings eine Verständnisfrage: Grundsätzlich ist es mir recht klar, wie das Ganze abläuft. Nur ein Punkt will mir nicht in den Schädel, und zwar die Generierung der Lookup Tabelle. Wenn ich das richtig verstehe, enthält die Lookup Tabelle für jedes möglicherweise im Datenframe enthaltene Byte den entsprechenden CRC-Wert, was eine Byteweise statt einer Bitweisen ermöglicht und ist dadurch dann entsprechend Schneller Der Code sieht wie folgt aus: und ist zum Teil geklaut (Quelle) Private Sub GenerateLookupTable() Dim temp As UShort Dim value As UShort [COLOR="#008000"]'Die Größe der Tabelle entspricht hier der Anzahl der im 'Datenframe möglichen Zeichen[/COLOR] _lookupTable = New UShort(255) {} [COLOR="#008000"]'Für jedes mögliche Byte im Datenstream?[/COLOR] For i As Integer = 0 To _lookupTable.Length - 1 [COLOR="#008000"]'temp stellt mit 0 initialisiertes 2 Byte Feld dar, korrekt? 'hier wird der CRC Wert von i berechnet?[/COLOR] temp = 0 [COLOR="#008000"]'Hier wird i einmal ganz nach links verschoben, wäre i also 255 'Dann würde value so aussehen (1111111100000000)?[/COLOR] value = CUShort(i << 8) [COLOR="#008000"]'Könnte jemand klügeres als ich ab hier mal für mich verständlich kommentieren? (idiotensicher )[/COLOR] For j As Integer = 0 To 7 [COLOR="#FF0000"] If ((temp Xor value) And &H8000) <> 0 Then temp = CUShort((temp << 1) Xor GENERATORPOLYNOM) Else temp <<= 1 End If value <<= 1 Next _lookupTable(i) = temp Next[/COLOR] End Sub [/code] Danke für eure Hilfe, LG Jimbo Bearbeitet 27. März 2014 von Jimbo0915 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.