Page 1 of 1

binaere daten in perl einlesen

Posted: 24. Jul 2002 21:14
by hugenay
Hallo,
ich will 2 integer werte aus einer Datei ziehen.
Jeweils 4 byte pro wert. Beides sind 32bit signed int Werte. Der erste muss -5 ergeben, der 2te genau 5.
Zunaechst mache ich:
$tmp = read(FILE, $buffer,4);
Dann gehts schon los:
$tmp = unpack("i", $buffer);
funktioniert nicht, sondern nur:
$tmp = unpack("h8" $buffer);
Da unpack im h Format die "nibbles" von hinten nach vorne einliest, muss ich die zunaechst noch umdrehen also etwa:
$tmp =~ s/(.)(.)(.)usw./$2$1$4$3usw./;
Fuer den 2ten Wert funktionierts: es kommt 5 raus.
Bei dem ersten aber nur Mist. Ich denke es liegt daran, dass es sich um nen negativen Wert handelt. Wie kann ich den in Hex behandeln oder umformen...?
thx und gruss hug.

Re: binaere daten in perl einlesen

Posted: 25. Jul 2002 12:45
by hugenay
na, ein bischen weiss ich jetzt schon: für den problematisch wert kriege ich: fffffffb und wenn ich das von ffffffff subrahiere kommt -5 raus. Nur: wie kann ich rauskriegen, dass es sich um einen negativern wert handelt? Ich kriege ja nur ne hex Zahl...

Re: binaere daten in perl einlesen

Posted: 31. Jul 2002 15:24
by hugenay
hab die sache jetzt irgendwie gelöst <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Binär fängt ein Wert (hier wenigstens) immer mit 1 an. Im Perl Kochbuch steht auch eine schöne Funktion um Binäre Daten in Dezimale umzuwandeln, die hat mir vieles erspart.