binaere daten in perl einlesen

Post Reply
Message
Author
hugenay

binaere daten in perl einlesen

#1 Post 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.

hugenay

Re: binaere daten in perl einlesen

#2 Post 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...

hugenay

Re: binaere daten in perl einlesen

#3 Post 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.

Post Reply