2017-05-06 13 views
0

私はPythonプログラミングにはかなり新しいですが、私は学校プロジェクトのために私自身の簡単な暗号化プログラムを作ろうとしています。私はついに多くの研究の後、主に異なるpythonコマンドの構文について始めた。とにかく、私のコードの1つのセクションは、私の単純な暗号化アルゴリズムを実行するために2行のテキスト(キーとmsg)を16進数に変換することです。すべてが正しいように見えますが、16進文字列の最後に大文字のLを持つ出力が得られることがあります。 (コードの下の例)任意の助言が役に立つでしょう!Pythonのテキストから16進数のプログラムに問題がある

例えばMSG = "Hello World" の、キー=「/ ABCを想定する。

# define functions 

def function_hex(string, length): 
    variable = "0x00" 
    for i in xrange(0, length): 
    n = ord(string[i]) 
    variable = hex(256 * int(variable, 16) + n)  #line 24 
    return variable 

# transform input/key to hex 

msg_hex = function_hex(msg, msg_length)    #line 29 
print msg_hex 

key_hex = function_hex(key, key_length) 
print key_hex 

出力

message: hello world 
key: /abc 
encrypt or decrypt: encrypt 
Traceback (most recent call last): 
    File "python", line 29, in <module> 
    File "python", line 24, in function_hex 
ValueError: invalid literal for int() with base 16: '0x68656c6c6f20776f72L' 

答えて

0

サム、 は、私はより良い方法を提案することはできますか?

# define functions 
msg = "hello world" 
key = "/abc" 

def function_hex(s): 
    return "0x" + "".join("{:02x}".format(ord(c)) for c in s) 

# transform input/key to hex 

msg_hex = function_hex(msg) 
print msg_hex 

key_hex = function_hex(key) 
print key_hex 
関連する問題