CRC 16 Bit (Polynom 0x1021) CCITT-Berechnung mit Anfangswert 0x0000C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 CRC 16 Bit (Polynom 0x1021) CCITT-Berechnung mit Anfangswert 0x0000

Post by Anonymous »

Ich versuche, den CRC16-Bit-CCITT zu berechnen, aber er liefert mir nicht das, was er soll. Ich habe fast alles durchsucht und weiß nicht, was ich übersehe.
Dies ist das vollständige Paket mit den letzten beiden Bytes der CRC-Berechnung:

54 A1 4A 03 E7 03 D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 CA

Im Moment füge ich ein Synchronisierungsbyte hinzu, das 0x54 ist. Wenn ich das Synchronisierungsbyte nicht hinzufüge, wäre das Paket

54 A1 4A 03 E7 03 D4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 CF

Beide CRC-Werte (64 CA und 65 CF) sind falsch. Ich sollte 72 DC bzw. 99 3F erhalten.
Dies ist der Code, den ich zur Berechnung des CRC16-Bits verwende:

Code: Select all

private static ushort CRCCalc(byte[] data)
{
ushort wCRC = 0;
for (int i = 1; i < data.Length; i++)
{
wCRC = (ushort)(wCRC ^ (data[i]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post