Thread Checksummenberechnung CRC16 (1 answers)
Opened by Gast at 2005-03-09 19:09

Gast Gast
 2005-03-09 19:09
#52465 #52465
Hallo,
ich habe ein Problem mit der CRC16 Berechnung. wenn ich die Checksumme eines wertes (z.B. 011000ce000204999a41c1) berechne, fehlen mir, wenn vorhanden, führende Nullen z.B. 0801 wird zu 81. wie kann ich das umgehen?
Gibt es gute Alternativen zu Digest::CRC?

Vielen Dank

ratz


Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub crc16
{
my($crc) = @_;
my $length = length($crc);
$crc = pack("H$length", $crc);
$ctx = Digest::CRC->new(type => "crc16");
$ctx->add($crc);
$ctx = Digest::CRC->new(width => 16, init => 0xFFFF,
  xorout => 0x0000, poly => 0x8005, refin => 1, refout => 1);
$ctx->add($crc);
my @crc = split //,$ctx->hexdigest;
my $crc = join "",@crc[2,3,0,1];
return $crc;
}
\n\n

<!--EDIT|renee|1110391687-->

View full thread Checksummenberechnung CRC16