将整数转换为ascii值C ++

时间:2014-02-28 00:42:36

标签: c++ string casting ascii

我正在尝试使用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>

如果你看到我以完全错误的方式接近这个问题,你能否建议一个可行的替代方法让我尝试一下?

感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

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

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

  4. 我可能会坚持使用第二种方法,因为 - 这里有一个疯狂的猜测 - 它不应该在你实际产生数字的地方改变很多东西。