[英]Converting an integer to to ascii values C++
我正在尝试使用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”->“ word”。
编辑:我认为使用某种mod函数将其拆分为两个数字的块,然后可以将其转换为字符可能有效吗?
如何克服某些具有2位数字和3位数字的ASCII字符的问题? 我认为这个问题已经解决,如第二次编辑中所述
如果您发现我完全以错误的方式处理此问题,您能否建议我尝试一种可行的替代方法?
感谢您的任何反馈。
您要的是不可能的。 您有几种选择:
将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; }
我可能会坚持使用第二种方法,因为-这里有一个大胆的猜测-它在实际生成数字的地方应该不会发生太大变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.