将整数转换为ascii值C++

Converting an integer to to ascii values C++

本文关键字:C++ ascii 整数 转换      更新时间:2023-10-16

我正试图使用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函数将其拆分为两个数字的块,然后将其转换为字符可能会奏效吗?

如何克服某些ascii字符有2位数,而某些字符有3位数的问题我认为这个问题已经如第二次编辑中所述得到了解决

如果你能看到我以完全错误的方式处理这个问题,你能给我一个可行的替代方法吗

感谢您的反馈。

你想要的是不可能的。你有几个选择:

  1. 将int更改为字符串,并在字符串中放入空格/其他字符:

    std::string test = "119 119";

  2. 将总值转换为二进制,逐字节解析:

    unsigned int test = 30583; // 119*256+119 char a = (test>>8)&0xff; char b = test&0xff;

  3. 以矢量形式传递数据,并一次转换一个元素:

    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; }

我可能会坚持第二种方法,因为这是一个疯狂的猜测,它不应该改变你实际生成数字的地方。