在Python中将字符串表示为整数

问题描述 投票:0回答:2

我希望能够将任何字符串表示为一个唯一的整数(意味着世界上的每个整数只能表示一个字符串,并且某个字符串将不断地产生同一个整数)。

显而易见的一点是,这就是计算机的工作方式,将字符串

'Hello'
(例如)表示为每个字符的数字,特别是一个字节(假设
ASCII
编码)。

但是...我想对该数字执行算术计算(使用

RSA
将其编码为数字)。

这变得混乱的原因是因为假设我有一个更大的字符串

'I am an average length string'
我有更多的字符(在本例中为29),并且具有29个字节的整数可能会很大,可能太多了计算机无法处理(当想出更大的弦时......?)。

基本上,我的问题是,我该怎么办?我不想使用任何模块来实现

RSA
,这是我想自己实现的任务。

python string encoding
2个回答
1
投票

以下是如何将字符串转换为单个数字。正如您所怀疑的,这个数字会变得非常大,但 Python 可以处理任意大小的整数。使用加密的通常方法是一次处理各个字节,但我假设这只是为了学习经验。这里假设一个字节字符串,如果你有一个 Unicode 字符串,你可以先编码为 UTF-8。

num = 0
for ch in my_string:
    num = num << 8 + ord(ch)

0
投票

我觉得上面的代码不太好用,每次输出都只有0,这个代码肯定能用。

num = 0
for ch in my_string:
    if "0" <= ch <= "9":
        num = num * 10 +(ord(ch) - ord("0"))
© www.soinside.com 2019 - 2024. All rights reserved.