FutureWarning bei x<<y

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von KRiusd, 05.10.2006.

  1. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    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
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 05.10.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Poste mal die relevante Script-Stelle.
     
  4. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    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
     
  5. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    Gibt es keinen der damit was anfangen kann?

    Wäre wirklich wichtig!
     
  6. #5 supersucker, 11.10.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    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:

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

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    :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
     
  8. #7 satisfied, 16.10.2006
    satisfied

    satisfied Mitglied

    Dabei seit:
    09.09.2006
    Beiträge:
    32
    Zustimmungen:
    0
    >>> 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ß
     
  9. KRiusd

    KRiusd Jungspund

    Dabei seit:
    25.04.2005
    Beiträge:
    23
    Zustimmungen:
    0
    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
     
Thema:

FutureWarning bei x<<y