[Python-de] Python 2.2 64-bit und 0xffffffff != -1

Thomas Waldmann tw-public at gmx.de
Di Mär 4 14:39:00 CET 2014


Moin,

> Python 2.2.3 auf einer 64-bit Maschine

Und Charlie Chaplin haben sie grad auf die Enterprise hochgebeamed.

<scnr>

> eval('0xffffffff') sollte -1 sein, ist aber 4294967295

Letzteres ist auf ner 64bit-Maschine mit 64bit Integers zu erwarten.

> Der gleiche Code mit den gleichen Patches auf einem 32-bit System
> funktioniert.

Weil durch 32bit-lange Werte da 0xffffffff sowohl 2^32-1 (unsigned
interpretation) als auch -1 (signed interpretation) bedeuten kann.

> Die Docu für Python 2.2 [1] sagt ausdrücklich: "Plain octal and
> hexadecimal literals may be as large as 4294967295, but values larger
> than 2147483647 are converted to a negative value by subtracting
> 4294967296".

Ich vermute mal, dass das vielleicht eher eine (etwas unglueckliche)
Beschreibung des auftretenden Effekts ist, als dass da wirklich etwas
subtrahiert wird.

> Ist das jemanden von Euch auch schon aufgefallen? Gibt es eine Patch?

Die Frage ist eher, ob der Bug nicht in der Doku ist.

Warum benutzt Du eigentlich 2.2? Kannst nicht was aktuelleres nehmen?

mfg Thomas



Mehr Informationen über die Mailingliste python-de