Konvertierung und bitweises &
Sven
- perl
0 Calocybe
Ich hole mir aus einer Zeile einer Datei einen String:
$reallong = substr($_, $position + 5, 8);
dieser repräsentiert einen Hex-Wert:
print $reallong. "\n"; --> E0D91607
jetzt möchte ich das 27. Bit explizit auf 0 setzen.
leider will geht es nicht so, wie ich es verstanden habe:
$reallong = (hex $reallong) & 0xF7FFFFFF;
Eine anschließende Ausgabe bringt mir als Inhalt von $reallong: 536870926 und sagt, es gibt einen "integer overflow in hexadecimal number"
ich weiß leider nich wo mein Fehler liegt.
Sven
Hi!
ich weiß leider nich wo mein Fehler liegt.
Ich auch nicht. Ich kann nur sagen, bei mir mit Perl 5.6.1 auf Cygwin/Win32 funktioniert das wie erwartet. Ich koennte mir hoechstens vorstellen, dass da in $reallong vielleicht ein problematisches Zeichen reingerutscht ist. Sowas wie einen Zeilenumbruch meine ich. Vielleicht kannst Du das ja nochmal ueberpruefen. Vielleicht sagst Du uns auch, welche Perlversion auf welchem System Du verwendest.
So long