binaere daten in perl einlesen
Posted: 24. Jul 2002 21:14
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.
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.