Ergebnis 1 bis 15 von 31

Thema: kleines PHP script zur Berechnung von CRC16 (CCITT, XMODEM, KERMIT, 1d0f, IBM)

Baum-Darstellung

  1. #1
    Junior
    Registriert
    Aug 2016
    Beiträge
    154
    Gefällt mir!
    152
    Du gefällst: 19

    kleines PHP script zur Berechnung von CRC16 (CCITT, XMODEM, KERMIT, 1d0f, IBM)

    Joah, im Titel ist bereits alles genannt. Es reicht bereits ein Eingabefeld, in die ich die Nachricht eingebe (Bsp.: 06 00 0e 00 00 00 9e 09 78 06 06 26 04 0a 02 06 d3 03) und ein Ausgabefeld, in der dann die Checksum steht (hier: d3 01 für KERMIT bzw CCITT-TRUE).
    Ich möchte bei der Eingabe mittels dropdown wählen können, ob die Eingabe in HEX, BIN oder DEC geschieht.

    Ich weiß, dass die Coder gerne Preise sehen wollen. Ich kann die Arbeit jedoch nicht einschätzen. Deshalb muss ich mich hier mal mit Preisen per PN zutexten lassen

    Anforderungen: es sollte ab php 5.4 sein, nicht älter. Bei Fragen einfach fragen

    - - - - - - - - - - Beitrag nachträglich erweitert - - - - - - - - - -

    Hier noch ein Nachtrag:

    Es gibt bereits Code für crc16. Allerdings für CRC-CCIT FALSE. Hier müsste aber vor dem down-shifting das lowbit geprüft werden. Allerdings bekomme ich das nicht hin, da ich das nicht so recht verstehe.

    PHP-Code:
    <?php
    // CCITT, X24
    define(CRC16POLYN,0x1021);
    define(CRC16POLYI,0x8408);

    // for "STANDARD" use 0x8005 and 0xA001

    function CRC16Normal($buffer) {
        
    $result 0xFFFF;
        if ( (
    $length strlen($buffer)) > 0) {
            for (
    $offset 0$offset $length$offset++) {
                
    $result ^= (ord($buffer[$offset]) << 8);
                for (
    $bitwise 0$bitwise 8$bitwise++) {
                    if ((
    $result <<= 1) & 0x10000$result ^= CRC16POLYN;
                    
    $result &= 0xFFFF/* gut the overflow as php has no 16 bit types */
                
    }
            }
        }
        return 
    $result;
    }

    function 
    CRC16Inverse($buffer) {
        
    $result 0xFFFF;
        if ( (
    $length strlen($buffer)) > 0) {
            for (
    $offset 0$offset $length$offset++) {
                
    $result ^= ord($buffer[$offset]);
                for (
    $bitwise 0$bitwise 8$bitwise++) {
                    
    $lowBit $result 0x0001;
                    
    $result >>= 1;
                    if (
    $lowBit$result ^= CRC16POLYI;
                }
            }
        }
        return 
    $result;
    }

    echo 
    '
        0x'
    ,dechex(CRC16Normal('06000e0000009e0978060626040a0206d303')),' == 0xd301<br />
        <br />
        0x'
    ,dechex(CRC16Inverse('06000e0000009e0978060626040a0206d303')),' == 0xd301<br />
    ?>
    Geändert von noobee (18.10.2016 um 16:08 Uhr)

Ähnliche Themen

  1. (Suche) - Grafiker für kleines Logo
    Von Alexej im Forum Designer (Grafik/Video/...)
    Antworten: 3
    Letzter Beitrag: 06.04.2018, 20:44
  2. (Suche) - Webentwickler für kleines CMS
    Von VTK im Forum Entwickler / IT-Techniker
    Antworten: 1
    Letzter Beitrag: 21.09.2017, 17:12
  3. Ein kleines Twitter Script für private Zwecke?
    Von Darren im Forum Mainstream Talk & OffTopic
    Antworten: 0
    Letzter Beitrag: 24.05.2016, 14:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
SzeneBox.org... im Mittelpunkt der Szene!
© since 2015 szeneBOX.org - All Rights Reserved
Domains: www.szenebox.org