【发布时间】:2014-03-31 19:00:25
【问题描述】:
我正在尝试使用 ascii 将数字转换为字母,目前我可以一次一个字母:
编辑:我一直在研究的 RSA 加密的输出目前是整数形式,我正在尝试研究如何将其转换为原始输入的单词/句子。我几乎完成了,但我完全陷入了最后一个“障碍”。我添加上下文是因为有评论询问我为什么要这样做(或类似的话)。
编辑:如果在加密过程中我使用 ASCII 值 - 87,所有字母都是 2 位长,消除了一些 ASCII 字符是 3 个字母和一些是 2 个字母的问题,这是否使问题更容易解决? (它限制我只能使用字母,但这对于它的目的来说很好)
#include <string>
#include <iostream>
char returnChar(int x)
{
return (char) x;
}
int main()
{
std::cout << returnChar (119);
}
这会转换 32 --> w.
如何调整此函数以允许我将“3232”->“ww”或任何其他整数更改为 ascii 字符,例如"32242713" --> "单词"。
编辑:我认为使用某种 mod 函数将其拆分为两个数字的块,然后可以将其转换为字符可能有效?
如何解决一些 ascii 字符有 2 位和一些有 3 位的问题? 我认为这个问题已经按照第二次编辑中的描述解决了
如果您发现我以完全错误的方式处理此问题,您能否建议一个可行的替代方法供我尝试?
感谢您的任何反馈。
【问题讨论】:
-
你想做什么?您期望这解决的外部问题是什么? “我如何克服一些 ascii 字符有 2 位数字和一些有 3 位数字的问题?”的答案。永远,永远做这样的远程事情。
-
如果你想将一串数字转换为一个没有分隔符的字符串,那是行不通的,因为解释有歧义。
-
也许如果你在数据值之间加上逗号,或者如果你将数据存储在一个数组中,你可以解决你的 2 或 3 个字符的问题。
-
啊,所以您需要一种将字符串转换为整数的合理方法。也许您可以将每个字符填充为三位数字,因此 102,31,41,123 将是“102,031,041,123”? (据记录,这与 RSA 在现实中的使用方式相差甚远。)
-
无法解密的加密方案有什么好处?