2015-01-06T10:48:24 montiDer Haken an der Sache ist, ich weiss nicht, was ich reinbekomme!
Ich sehe nur das High und Low Byte und weiss nicht, ob der Wert jetzt negativ oder positiv ist!
Insofern kann ich auch vorher nicht mit pack arbeiten.
2015-01-06T10:58:56 montiDie Byteorder kenne ich. Ich weiss also was high und low byte ist.
Und signed ist es auch immer.
Alles was ich nicht weiss ist, ob die aktuell zu dekodierende Zahl negativ ist oder nicht.
my $val = unpack "C", $byte;
perl -E'say unpack("s", "\x00\x12")'
2015-01-06T10:58:56 montiAlles was ich nicht weiss ist, ob die aktuell zu dekodierende Zahl negativ ist oder nicht.
2015-01-06T11:46:53 Raubtier2015-01-06T10:58:56 montiAlles was ich nicht weiss ist, ob die aktuell zu dekodierende Zahl negativ ist oder nicht.
Wenn im höherwertigen Byte das "linke" Bit 1 ist, ist die Zahl negativ.
2015-01-07T11:15:20 montiDanke für die Hinweise :)
Gibt es eine Möglichkeit einzelne Bits auszuwerten?
1
2
3
4
5
if ( $w1_h > 128 ) {
$word = ($w1_h << 8) + $w1_l;
$word = pack ( 's', $word);
$word = unpack( 's', $word);
}
2015-01-24T15:27:09 monti1. Nachschauen, ob das high byte >128? Dann ist es eine negative Zahl.