php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.08.2008, 20:27  
Neuer Benutzer
 
Registriert seit: 07.08.2008
Beiträge: 14
fre@ky befindet sich auf einem aufstrebenden Ast
Standard CRC16 mit javascript oder php

nabend...

zur vorstellung: leidenschaftlicher programiere aus den Sauerland Gruß an alle...

Hätte da ein kleines Problen und hoffe ihr könnt mir helfen...

Ich müsste eine CRC16 Checksumme im format CRC-CCITT (0xFFFF)0x29B1
errechnen.

hätte villeicht evtl. jemand n tipp für mich....

thx

Gruß

Fre@ky
fre@ky ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.08.2008, 22:02  
dex
Erfahrener Benutzer
 
Registriert seit: 17.06.2008
Beiträge: 195
dex befindet sich auf einem aufstrebenden Ast
dex eine Nachricht über ICQ schicken
Standard

Brauchst du sowas wie 16 and 32 bit CRC calculator oder willst du einen mit php selbst bauen?
dex ist offline   Mit Zitat antworten
Alt 07.08.2008, 22:39  
Neuer Benutzer
 
Registriert seit: 07.08.2008
Beiträge: 14
fre@ky befindet sich auf einem aufstrebenden Ast
Standard

@dex
mit php selbst bauen.
ein beispiel was ich gefunden habe... On-line CRC calculation and free library

was ich schon probiert habe...
PHP-Code:
<?
// MODBUS RTU, CRC16, 
// input-> modbus rtu string
// output -> 2bytes string, in correct modbus order
function crc16($string,$length=0){
    
$auchCRCHi=array(    0x000xC10x810x400x010xC00x800x410x010xC00x800x410x000xC10x81,
                
0x400x010xC00x800x410x000xC10x810x400x000xC10x810x400x010xC0,
                
0x800x410x010xC00x800x410x000xC10x810x400x000xC10x810x400x01,
                
0xC00x800x410x000xC10x810x400x010xC00x800x410x010xC00x800x41,
                
0x000xC10x810x400x010xC00x800x410x000xC10x810x400x000xC10x81,
                
0x400x010xC00x800x410x000xC10x810x400x010xC00x800x410x010xC0,
                
0x800x410x000xC10x810x400x000xC10x810x400x010xC00x800x410x01,
                
0xC00x800x410x000xC10x810x400x010xC00x800x410x000xC10x810x40,
                
0x000xC10x810x400x010xC00x800x410x010xC00x800x410x000xC10x81,
                
0x400x000xC10x810x400x010xC00x800x410x000xC10x810x400x010xC0,
                
0x800x410x010xC00x800x410x000xC10x810x400x000xC10x810x400x01,
                
0xC00x800x410x010xC00x800x410x000xC10x810x400x010xC00x800x41,
                
0x000xC10x810x400x000xC10x810x400x010xC00x800x410x000xC10x81,
                
0x400x010xC00x800x410x010xC00x800x410x000xC10x810x400x010xC0,
                
0x800x410x000xC10x810x400x000xC10x810x400x010xC00x800x410x01,
                
0xC00x800x410x000xC10x810x400x000xC10x810x400x010xC00x800x41,
                
0x000xC10x810x400x010xC00x800x410x010xC00x800x410x000xC10x81,
                
0x40);
    
$auchCRCLo=array(    0x000xC00xC10x010xC30x030x020xC20xC60x060x070xC70x050xC50xC4,
                
0x040xCC0x0C0x0D0xCD0x0F0xCF0xCE0x0E0x0A0xCA0xCB0x0B0xC90x09,
                
0x080xC80xD80x180x190xD90x1B0xDB0xDA0x1A0x1E0xDE0xDF0x1F0xDD,
                
0x1D0x1C0xDC0x140xD40xD50x150xD70x170x160xD60xD20x120x130xD3,
                
0x110xD10xD00x100xF00x300x310xF10x330xF30xF20x320x360xF60xF7,
                
0x370xF50x350x340xF40x3C0xFC0xFD0x3D0xFF0x3F0x3E0xFE0xFA0x3A,
                
0x3B0xFB0x390xF90xF80x380x280xE80xE90x290xEB0x2B0x2A0xEA0xEE,
                
0x2E0x2F0xEF0x2D0xED0xEC0x2C0xE40x240x250xE50x270xE70xE60x26,
                
0x220xE20xE30x230xE10x210x200xE00xA00x600x610xA10x630xA30xA2,
                
0x620x660xA60xA70x670xA50x650x640xA40x6C0xAC0xAD0x6D0xAF0x6F,
                
0x6E0xAE0xAA0x6A0x6B0xAB0x690xA90xA80x680x780xB80xB90x790xBB,
                
0x7B0x7A0xBA0xBE0x7E0x7F0xBF0x7D0xBD0xBC0x7C0xB40x740x750xB5,
                
0x770xB70xB60x760x720xB20xB30x730xB10x710x700xB00x500x900x91,
                
0x510x930x530x520x920x960x560x570x970x550x950x940x540x9C0x5C,
                
0x5D0x9D0x5F0x9F0x9E0x5E0x5A0x9A0x9B0x5B0x990x590x580x980x88,
                
0x480x490x890x4B0x8B0x8A0x4A0x4E0x8E0x8F0x4F0x8D0x4D0x4C0x8C,
                
0x440x840x850x450x870x470x460x860x820x420x430x830x410x810x80,
                
0x40);
    
$length        =($length<=0?strlen($string):$length);
    
$uchCRCHi    =0xFF;
    
$uchCRCLo    =0xFF;
    
$uIndex        =0;
    for (
$i=0;$i<$length;$i++){
        
$uIndex        =$uchCRCLo ord(substr($string,$i,1));
        
$uchCRCLo    =$uchCRCHi $auchCRCHi[$uIndex];
        
$uchCRCHi    =$auchCRCLo[$uIndex] ;
    }
    return(
chr($uchCRCLo).chr($uchCRCHi));
}
$derstring='10';
$ausgabe=crc16($derstring); 
echo 
'ausgabe='.$ausgabe;
?>
ich bekomme aber da nur 1byte raus !
brauche aber 2byte (also 0xF3C1)
fre@ky ist offline   Mit Zitat antworten
Alt 08.08.2008, 19:44  
ElPresidente
Gast
 
Beiträge: n/a
Standard

Also bei mir sind es zwei Byte (0x1434).
  Mit Zitat antworten
Alt 08.08.2008, 20:19  
Neuer Benutzer
 
Registriert seit: 07.08.2008
Beiträge: 14
fre@ky befindet sich auf einem aufstrebenden Ast
Standard

@ElPresidente
hast recht. es kommen 2 byte !
eingabe: 123456789
ausgabe: 7K (0x4B37)

hier:On-line CRC calculation and free library sehe ich die vershiedene modi... was in meinem beispiel als ergebniss kommt ist der CRC-16 (Modbus).
ich bräuchte aber den: CRC-CCITT (0xFFFF)

verzweifle noch hier ...
fre@ky ist offline   Mit Zitat antworten
Alt 08.08.2008, 23:25  
Neuer Benutzer
 
Registriert seit: 07.08.2008
Beiträge: 14
fre@ky befindet sich auf einem aufstrebenden Ast
Standard

habs gelöst...
falls jemand braucht:
PHP-Code:
<?php
// this function is used to calculate the (common) crc16c for an entire buffer
function calculate_common_crc16c($buffer)
{
    
$crc16c 0xffff;  // the crc initial value
    
$buffer_length strlen($buffer);
    for (
$i 0$i $buffer_length$i++)
    {
        
$ch ord($buffer[$i]);
        
$crc16c update_common_crc16c($ch$crc16c);
    }
    return 
$crc16c;
}
// this function is used to calculate the (common) crc16c byte by byte
// $ch is the next byte and $crc16c is the result from the last call, or 0xffff initially
function update_common_crc16c($ch$crc16c)
{
    
$crc16c_polynomial 0x1021
    
// This comment was in the code from
    // http://www.joegeluso.com/software/articles/ccitt.htm
    // Why are they shifting this byte left by 8 bits??
    // How do the low bits of the poly ever see it?
    
$ch <<= 8;
    for(
$i 0$i 8$i++)
    {
        if ((
$crc16c $ch) & 0x8000)
        {
            
$xor_flag true;
        }
        else
        {
            
$xor_flag false;
        }
        
$crc16c $crc16c << 1;
        if (
$xor_flag)
        {
            
$crc16c $crc16c $crc16c_polynomial;
        }
        
$ch $ch << 1;
    }
    
// mask off (zero out) the upper two bytes
    
$crc16c $crc16c 0x0000ffff;
    return 
$crc16c;
}
$ausgabe=calculate_common_crc16c("123456789");
echo 
'JO:'.$ausgabe;

?>
fre@ky ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Lange Verarbeitungszeiten - Zuviel JavaScript? [-UFO-]Melkor HTML, Usability und Barrierefreiheit 2 15.06.2007 23:54
Unsichtbares Formularfeld mit Javascript ansprechen mAy^daY HTML, Usability und Barrierefreiheit 6 13.08.2006 21:25
Javascript von Smileys und Buttons wie B U I ändern... mickschen HTML, Usability und Barrierefreiheit 10 07.06.2006 15:56
PHP + Javascript + MYSQL socke PHP Tipps 2006 4 02.04.2006 22:02
Ist JavaScript OOP sinnvoll? HStev HTML, Usability und Barrierefreiheit 2 26.01.2006 12:11
Variable wird geändert bei Übergabe an Javascript PHP Tipps 2007 4 17.12.2005 16:53
[Erledigt] Javascript Aufklappen/Zuklappen HTML, Usability und Barrierefreiheit 5 13.12.2005 14:06
Javascript durch PHP ausdrücken PHP Tipps 2007 10 09.11.2005 20:04
2 javascript fragen Rotti HTML, Usability und Barrierefreiheit 4 03.08.2005 11:40
Php soll Javascript beschleunigen PHP Tipps 2005 4 17.04.2005 12:56
Formulare mit arrays mit php und gleichzeitig mit JavaScript PHP-Fortgeschrittene 2 14.10.2004 15:33
JavaScript in JavaScript geschriebene Html-Datei einbinden. woods HTML, Usability und Barrierefreiheit 6 06.09.2004 18:33
Javascript HTML, Usability und Barrierefreiheit 5 31.08.2004 18:30
php + Javascript, Variablenübergabe PHP Tipps 2004 14 28.07.2004 15:42

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
crc16 php

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum