如何将整数转换为其 ascii 等效项

How to convert an integer to its ascii equivalent

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

上下文:我正在用c ++制作密码生成器,基本上它使用rand来生成数字,这些数字直接对应于ASCII字符。

因此,生成数字很容易,但我需要将其转换为 ASCII 等效物以实际制作可用的密码。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main ()
{
    //Initializing variables.
    int type = 0;
    int character = 0;
    char print = character;
    //Generator.
    srand(time(NULL));
    for (int i=0; i<10;i++)
    {
        type = rand()%(3-1+1)+1;//Determines: 1 = Uppercase, 2 = Lowercase, 3 = Number.
        if (type == 1)//If Uppercase.
        {
            character = rand()%(90-65+1)+65;//Determines Uppercase character to be generated.
            cout<<print<<endl;
        }
        if (type == 2)//If Lowercase.
        {
            character = rand()%(122-97+1)+97;//Determine Lowercase character to be generated.
            cout<<print<<endl;
        }
        if (type == 3)//If Numerical.
        {
            character = rand()%(57-48+1)+48;//Determines Number to be generated.
            cout<<print<<endl;
        }
    }
}

在我上面发布的代码中,你可以看到我上次试图公然告诉程序变量"字符"需要用作实际字符。

好吧,所以似乎有点混乱。兰德生成一个介于 65 到 90 之间的数字。这些数字对应于 ASCII 表上的大写字母。我想将字母打印到控制台,而不是生成的数字。

当你写这个的时候

char print = character;

告诉编译器,你希望它将变量print初始化为变量character当前值(当时恰好为零)。如果您希望将当前值设置为不同类型的变量,则需要在重新分配 character 后执行此操作:

character = rand()%(90-65+1)+65;//Determines Uppercase character to be generated.
print = (char)character;
cout<<print<<endl;

但是,您不必重新分配,因为直接在打印前进行转换就足够了:

character = rand()%(90-65+1)+65;//Determines Uppercase character to be generated.
cout<<(char)character<<endl;

注意:虽然可以使用 ASCII 字符的十进制值,但如果改用字符常量,代码会变得更容易阅读:

character = rand()%('Z'-'A'+1)+'A';

可以通过替换来尝试

cout<<print<<endl;

cout<<(char)character;

然后你就会明白你错过了什么。

除了Jay Kumars的回答之外,我相信这是一个隐式/显式转换

这是我用我的代码测试的一个例子,它为此起作用。

for (int i = 0; i < size; ++i)  {
     cout << (char)('0' + 17 + i) << "-->t"; // implicit conversion
}