2017-08-19 4 views
1

Ich versuche, einen Python-2-Skript Python 3, hier ist das Skript zu konvertieren:Python 3 - Typeerror: nicht unterstützte Operandtyp (e) für -: 'int' und 'str'

def encode(key, clear): 
    enc = [] 
    for i in range(len(clear)): 
     key_c = key[i % len(key)] 
     enc_c = chr(ord(clear[i] + key_c) % 256) 
     enc.append(enc_c) 
    return base64.urlsafe_b64encode("".join(enc)) 

def decode(key, enc): 
    dec = [] 
    enc = base64.urlsafe_b64decode(enc) 
    for i in range(len(enc)): 
     key_c = key[i % len(key)] 
     dec_c = chr((256 + enc[i] - key_c) % 256) 
     dec.append(dec_c) 
    return "".join(dec) 

Wenn Ich führe das, es gibt mir den folgenden Fehler:

Traceback (most recent call last):    
    File "./script", line 132, in <module>   
    payload=decode(p,payload)     
    File "./script", line 22, in decode    
    dec_c = chr((256 + enc[i] - key_c) % 256) 
TypeError: unsupported operand type(s) for -: 'int' and 'str' 

Wie soll ich das beheben? Tut mir leid, ich bin neu bei Python.

+0

können Sie versuchen, mit 'dec_c = chr ((256 + int (enc [i]) - key_c)% 256)' – PRMoureu

Antwort

0

Von Beginner's Python tutorial

unsupported operand type(s) for -: 'str' and 'int'

What Python is trying to tell you (but struggling to find a good word for it) is that you can't join a string of letters and a number into one string of text.

, es zu vermeiden, dies zu tun, können Sie entweder konvertieren enc[i] und key_c zu intdec_c = chr((256 + int(enc[i]) - int(key_c)) % 256).

oder konvertieren 256-str dann die ganze expresison zurück zu int so kann es durch 256 dec_c = chr(int((str(256) + enc[i] - key_c)) % 256)

Hinweis Modulo wird dies nicht das Ergebnis sein könnte, die Sie wollen. Allerdings können Sie den Fehler so beheben

Verwandte Themen