CRC16 IBM Prüfsumme

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Originally posted by Ghostrider28 View Post
    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.

    Comment


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

      Comment


      • #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
        Last edited by h3ll; 05-05-2015, 20:15.

        Comment

        Working...
        X