我正在尝试使用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 - &gt;瓦特
我如何调整此功能以允许我更改“3232” - &gt; “ww”或任何其他整数到ascii字符,例如“32242713” - &gt; “字”。
编辑:我认为使用某种mod函数将其拆分为两个数字的块然后可以转换为字符可能有效吗?如何克服一些ascii字符有两位数字和一些有3位数的问题? 我认为这个问题已经解决,如第二次编辑所述 < / p>
如果你看到我以完全错误的方式接近这个问题,你能否建议一个可行的替代方法让我尝试一下?
感谢您的反馈。
答案 0 :(得分:0)
你要求的是不可能的。你有几个选择:
将int更改为字符串,并在字符串中放置空格/其他字符:
std::string test = "119 119";
将总值转换为二进制,并逐字节解析:
unsigned int test = 30583; // 119*256+119
char a = (test>>8)&0xff;
char b = test&0xff;
将数据传递到矢量中并一次转换一个元素:
std::vector<char> returnChar(const std::vector<int> &data){
std::vector<char> output;
for(unsigned int i=0;i<data.size();i++)
output.push_back(char(data[i]));
return output;
}
我可能会坚持使用第二种方法,因为 - 这里有一个疯狂的猜测 - 它不应该在你实际产生数字的地方改变很多东西。