CRC16 IBM Prüfsumme

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CRC16 IBM Prüfsumme

    Hallo zusammen,

    ich benötige eine CRC 16 Prüfsumme.
    Ich ging davon aus "Da gibt es doch bestimmt eine Funktion oder ein Snippet für", Ergebnis, 2 Stunden suchen und testen, kein Ergebnis.

    Der Wert 0C01050000000E234745542056455253494f4e0D0A01 sollte die CRC D0C8 ergeben.

    Ich poste bewusste nun keinen Code, den ich getestet habe, da ich alle Snippets einer bekannten Suchmaschine, die ich auf den ersten beiden Ergebnisseiten gefunden habe, ausprobiert habe. Ich erhalte zwar immer Ergebnisse, aber nicht den Wert D0C8 (Stammt aus einem Sample, von dem der Hersteller sagt, dass diese CRC genau richtig ist.)

    On-line CRC calculation and free library // Liefert übrigens auch das korrekte Ergebnis, wenn man HEX Input auswählt. Aber ich bekomme alles möglich, nur nicht D0C8.

    Hat jemand einen Tip?

    Danke und Gruß
    Boris

  • #2
    Zitat von Ghostrider28 Beitrag anzeigen
    Liefert übrigens auch das korrekte Ergebnis, wenn man HEX Input auswählt.
    Na dann musst du vielleicht das gleiche machen – und deinen Eingabewert als Hex betrachten (statt als den eigentlichen String, von dem die Checksumme zu bilden ist), und erst mal „dekodieren“?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Mit anderen Worten per hex2bin? Wenn nein, habe ich dich nicht verstanden.

      Kommentar


      • #4
        PHP-Code:
        function crc16($string$crc 0) {
            for (
        $x 0$x strlen($string); $x++) {
                
        $crc $crc ord($string[$x]);
                for (
        $y 0$y 8$y++) {
                    if ((
        $crc 0x0001) == 0x0001) {
                        
        $crc = (($crc >> 1) ^ 0xA001);
                    } else {
                        
        $crc $crc >> 1;
                    }
                }
            }
            return 
        $crc;
        }

        printf('%04X'crc16(hex2bin('0C01050000000E234745542056455253494f4e0D0A01')));
        // D0C8 
        Quelle: Ladder Logic CRC-16 Calculator
        Zuletzt geändert von h3ll; 05.05.2015, 21:15.

        Kommentar

        Lädt...
        X