FutureWarning bei x<<y

KRiusd

KRiusd

Jungspund
Hallo zusammen,

ich habe mir ein Script geschrieben das Dateien mit dem rijndael-Algorithmus verschlüsselt und wieder entschlüsselt!

Das Script funktioniert auch perfekt!
Allerdings bekomme ich beim ausführen mehrmals die meldung:

Code:
FutureWarning: x<<y losing bits or changing sign will return a long in Python 2.4 and up

Da das Script das tut was es soll ist es mir nun ehrlich gesagt egal ob ich das Problem der Warnung behebe oder nur den Output unsichtbar mache!

Allerdings weis ich weder beim Einen noch beim Anderen wie ich das anstelle! :hilfe2:

Bin für jede Hilfe dankbar! :)


Grüße KRiusd
 
Ausgabe:
Code:
FutureWarning: x<<y losing bits or changing sign will return a long in Python 2.4 and up
  r <<= 8

FutureWarning: x<<y losing bits or changing sign will return a long in Python 2.4 and up
  tk[0] ^= (S[(tt >> 16) & 0xFF] & 0xFF) << 24 ^  \

1. Auftreten:
Code:
def mul4(a, bs):
    if a == 0:
        return 0
    r = 0
    for b in bs:
        r <<= 8
        if b != 0:
            r = r | mul(a, b)
    return r

2. Auftreten
Code:
tk[0] ^= (S[(tt >> 16) & 0xFF] & 0xFF) << 24 ^  \
                     (S[(tt >>  8) & 0xFF] & 0xFF) << 16 ^  \
                     (S[ tt        & 0xFF] & 0xFF) <<  8 ^  \
                     (S[(tt >> 24) & 0xFF] & 0xFF)       ^  \
                     (rcon[rconpointer]    & 0xFF) << 24
 
Gibt es keinen der damit was anfangen kann?

Wäre wirklich wichtig!
 
Also ich von Python keine Ahnung.

Aber du hast offensichtlich google nicht oder falsch benutzt.

Wenn du einfach mal die Fehlermeldung in google reinpastest kriegst du z.B. sowas:

Das ist kein Fehler, sondern eine Warnung die besagt das in zukuenftigen
python-versionen (eben >2.4) bitshifts mittels << eine Vergroesserung der
Zahl erzeugen, falls sie ueber die Groesse von int hinaus gehen und dabit
potientiell Bits verloren gehen.

Du könntest also z.B. vor der Bitshift Operation prüfen ob das der Fall sein wird, und dementsprechend diesen Fall behandeln.
 
:D

Habe ich auch schon gefunden! ^^

Aber was soll ich da prüfen?
Bzw. wie soll ich was prüfen? ?(

Genau das ist mein Problem :D
 
>>> import sys
>>> sys.maxint
Das gibt die maximale Integerzahl
Wenn du diese int Zahl mit << shift vergrößert, macht python eine long daraus
Zumindest bei mir macht python implizit einen cast nach long. Ob das bei >2.4 auch so ist, weiß ich nicht.

Gruß
 
Juhuuu!!!

Es ist wirklich so! Ab Version 2.4 wird automatisch ein direct Cast nach long durchgeführt wenn man eine Bitshift operation durchführt!

Habe alle relevanten Variablen mit long(x) initialisiert und schon sind die Meldungen weg!

Besten Dank

Grüße KRiusd
 

Ähnliche Themen

Ubuntu X / dbus problem

/etc/lsb-base-logging.sh editieren

Installing GENTOO 2008.0 on a QEMU DISK IMAGE (and KDE4).

Composite oder Svideo Ausgang mit Geforce

Aufbauprobleme beim Desktop beim initialen Login

Zurück
Oben