2017-08-19 18 views
1

私は、Python 3へのpython 2スクリプトを変換しようとしているが、ここではスクリプトです:Pythonの3 - TypeError例外:サポートされていないオペランドのタイプ(複数可)について - : 'int型' と '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) 

私はそれを実行する、それは私に次のエラーを与える:

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' 

私はこれを修正する必要がありますか?すみません、私はPythonを初めて使っています。

+0

'dec_c = chr((256 + int(enc [i]) - key_c)%256)' – PRMoureu

答えて

0

あなたがこれを行うことができ、それを避けるために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.

からは、intdec_c = chr((256 + int(enc[i]) - int(key_c)) % 256)enc[i]key_cを変換することができます。 str

または変換256は、その後戻っintに全体expresisonのであなたが望む結果ではないかもしれません256 dec_c = chr(int((str(256) + enc[i] - key_c)) % 256)

注によってモジュロことができます。しかし、この方法でエラーを修正することができます

関連する問題