Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von Jimbo0915

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...