2016-12-13 10 views
1

私はRSAチップを復号化する暗号のコースを持っています。復号化が完了したら、復号化されたリスト(decryptList [])のすべての数字を文字に変換して、テキストを読み取り可能にします。大きな数字を文字に変換する - Python

decryptList [0]には138766332635707196740445712245626646062があります。この数字を読み込み可能なテキストに変換するにはどうすればよいですか?

私はintに文字列から行くことを試みた:

plainText = "stackoverflow".encode('hex') 
plainInt = long(plainText,16) 
print plainInt 
=> 9147256685580292608768854486903 

今私は "stackoverflowの" にplainIntから行きたいです。 どのように私はこれを達成する必要がありますヒント?あなたの例に

答えて

0

回答:進から文字列を取得するための六角とdecodeに長いから逆方向に行くためにhexを使用します。Pythonの2で

>>> plain_hex = hex(plainInt) 
>>> print plain_hex 
0x737461636b6f766572666c6f77L 
>>> str(plain_hex)[2:-1].decode('hex') 
'stackoverflow' 
+0

の作品はどうもありがとうございました! – user3249677

1

を、あなたは文字列を変換するためにやったことの逆を行うことができます数へ:

>>> plainHex = hex(plainInt)[2:-1] 
>>> plainHex.decode('hex') 
'stackoverflow' 

のPython 3では、int型は、バイト長とバイトオーダー(ビッグまたはリトルエンディアン)かかり、「to_bytes」機能があります。

>>> plainInt.to_bytes(13, byteorder='big') 
b'stackoverflow' 
+0

ありがとう、これは働いた! – user3249677

2

これは、Python 2と3

import codecs 
b = hex(plainInt).rstrip("L").lstrip("0x") 
codecs.decode(b, 'hex').decode('utf-8') 
関連する問題