将大数字转换为字符 - Python

时间:2016-12-13 14:42:03

标签: python string int

我有一门密码学课程,我将解密RSA-chipher。现在解密完成后,我想将解密列表中的每个数字(decryptList [])转换为字符,以便文本可读。

在decryptList [0]中我有138766332635707196740445712245626646062。我该如何将此数字转换为可读文本?

我试图从字符串转到int:

var items = [ 1,  1,  1,  2];
var units = [12, 13, 14, 10];

// Create the object like so:
// { 
//   "1:12": true,
//   "1:13": true, // etc.
// }
var map = items.reduce(function(map, itemId, i) {
  var id = itemId + ":" + units[i];
  map[id] = true;
  return map;
}, {});

console.log("1:13", map["1:13"]);
console.log("1:10", map["1:10"]);
console.log("2:10", map["2:10"]);

现在我想从plainInt转到" stackoverflow"。 任何提示我应该如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

这适用于python 2和3

import codecs
b = hex(plainInt).rstrip("L").lstrip("0x")
codecs.decode(b, 'hex').decode('utf-8')

答案 1 :(得分:1)

在Python 2中,您可以执行与将字符串转换为数字相反的操作:

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

在Python 3中,int有一个“to_bytes”函数,它接受一个字节长度和一个字节顺序(大或小端):

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

答案 2 :(得分:0)

回答你的例子:使用 create proc usp_test as Begin select * from t1 option(recompile) select * from t2 End 从长到十六进制后退,hex从十六进制获取字符串:

decode