Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6781[/thread]

Frage zu Digest::CRC

Leser: 2


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
vayu
 2005-03-11 11:34
#52533 #52533
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hallo ich benutze den CRC16 Teil aus dem Modul Digest::CRC

und zwar habe ich 32 Byte lange Hexadezimalzahlen.

diese wandle ich um in BINÄRzahlen, wird recht lang und eklig, aber muss so sein ;)

das dumme ist nun, wenn ich die crc16 funktion mit meiner langen zahl füttere, denkt sie wohl es sei ein string, denn auch wenn NUR Nullen drin stehen kommt nicht etwa 0 raus, sondern eben eine Zahl wie 35292.

kann man der funktion verklickern, dass sie in den binärmodus gehen soll?

ich rufe sie grad einfach so auf

Code: (dl )
my $crc = crc16($bin);
\n\n

<!--EDIT|vayu|1110533711-->
renee
 2005-03-11 12:08
#52534 #52534
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Dir den CRC-Algorithmus mal angeschaut?? Der wandelt ja nicht Binärzahlen in Dezimalzahlen oder so um, sondern macht mehrere Berechnungen (wie Bitshift exponentialfunktionen etc)...

Sonst hätte 00000 und 00 ja die gleiche Checksumme!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2005-03-11 12:48
#52535 #52535
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
die Frage ist jetzt, auf was du den Crc anwenden willst?
auf die Zahl an sich (also auf Ziffern) oder auf einen String (also eine Zeichenkette) die aus Nullen und einsen besteht!
Auf Zahlen ist es schwierig, da man sie unterschiedlich darstellen kann. Binär, Hexal, Octal, Decimal, ... (warum heißt es nicht Binal?) Um damit in einer Programmiersprache vernünftig damit arbeiten zu können, wandelt man sie am besten in decimal um. Wenn es jetzt in perl einen Datentyp für binärzahlen geben würde, könntest du den wohl auch nehmen aber den gibt es nicht. Du musst also binärzahlen als strings darstellen (was du ja schon gemacht hast). Strings werden aber leider anders interpretiert. weil man kann ja nicht auf anhieb sagen, was diese zeichenkette darstellt.
Also, lange Rede gar kein Sinn: erklär einfach mal dein Problem genauer und dann schauen wir weiter!
vayu
 2005-03-11 14:26
#52536 #52536
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
jo ich hab das jetzt anders geregelt, das war halt das problem, dass es is in perl keine datentypen dafür gibt.

hab jetzt meinen string, der aus vielen Hex"zahlen" besteht, in perl ja eigentlich normale buchstaben

Code: (dl )
my $binary_string = pack("H*", $data);


und hab ihm das zu fressen gegeben, dann stehen da nämlich auch im ASCII wirklich nur 0 und 1.

darüber hat er dann die richtige CHECKSUM berechnet, was meint bei nur 0en kam auch 0 raus.

und @renee 0000 soll ja auch diegleiche checksum haben wie 00

weil binär ist ja 000000 = 00 = 0 (zB)

see my point? :)

auf jeden fall funktionierts nun so


oder ich bin grad zu dumm und check mein eigenes problem nicht :)\n\n

<!--EDIT|vayu|1110544083-->
esskar
 2005-03-11 14:42
#52537 #52537
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
jep; so ist richtig!
esskar
 2005-03-11 14:43
#52538 #52538
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=vayu,11.03.2005, 13:26]jo ich hab das jetzt anders geregelt, das war halt das problem, dass es is in perl keine datentypen dafür gibt.[/quote]
irrtum; perl kann binär
jedoch stellt z.b. ein print $binaer keine 0'en und 1'en da, sondern eben bytes (chars)
vayu
 2005-03-11 15:27
#52539 #52539
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
jo richtig und mit dem pack gschmarri habbich ihm ASCII codierte 1 und 0 gegeben, die er ja dann mochte.

puh das is gar ned so leicht mit perl :)
renee
 2005-03-11 16:20
#52540 #52540
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=vayu,11.03.2005, 13:26]und @renee 0000 soll ja auch diegleiche checksum haben wie 00

weil binär ist ja 000000 = 00 = 0 (zB)

see my point? :)[/quote]
sorry, hab auch "in zeichenketten" gedacht...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
vayu
 2005-03-11 16:59
#52541 #52541
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
für sowas eignet sich C dann wohl leider doch besser :) *duck*
esskar
 2005-03-11 18:39
#52542 #52542
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=vayu,11.03.2005, 15:59]für sowas eignet sich C dann wohl leider doch besser :) *duck*[/quote]
wieso?
(nicht dass ich was gegen C hab; ich bevorzuge es in vielen Dingen)
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-03-11 11:34.