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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...