Thread PHP script in perl umsetzen (10 answers)
Opened by thoweiss at 2007-03-22 14:10

GwenDragon
 2007-03-22 15:34
#75249 #75249
User since
2005-01-17
14785 Artikel
Admin1
[Homepage]
user image
Das ist aber nicht die gleiche CRC16-Routine wie die aus dem Modul Digest::CRC!


So sollte das Skript gehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/perl

use strict;
use warnings;

my $strToSend = "\xfe\x04\x01";
my $CRC16 = GetCRC16($strToSend. "\x00\x00"); # ergibt "BED2"
print "Checksum 1: ". sprintf("%X", $CRC16). "\n";


my $strReceived = "\xfe\x04\x01\xbe\xd2";
$CRC16 = GetCRC16($strReceived); # ergibt 0
print "Checksum 2: ". sprintf("%X", $CRC16). "\n";

sub GetCRC16 {
   my $s = shift;
   
   my $CRCreg = 0xffff00;
   
   for (my $cp=0; $cp<length($s); $cp++) {
    $CRCreg |= ord( substr($s,$cp,1) );
    
    for (my $bp=0; $bp<8; $bp++) {
        $CRCreg <<= 1;
        if ($CRCreg & 0x1000000) {
        $CRCreg ^= 0x100200; # hier ist das Polynom 0x1002 enthalten
        }
        $CRCreg &= 0xffffff;
    }
   }
   return $CRCreg >> 8;
}

1;
\n\n

<!--EDIT|GwenDragon|1174570576-->

View full thread PHP script in perl umsetzen