C语言 把数字转成字母

就比如说我有一串密码 十进制是29811 转成16进制是7473 而这里十六进制的61对应的是a 62是b以此类推 怎么样编程能够把这样一个十进制的数字转化成两个字母

void convert(unsigned int code, char * plaintext)
{
    
    /* 截取前后两个字母的密码 */ 
    char letter0 = (char)(code >> 8), letter1 = (char)code;
    /* 以0x61减去a的ASCII值(a的ASCII值是0x41),得到的差即是密码转换因数 */ 
    char factor = 0x61 - ‘a’;

    plaintext[1] = letter1 - factor;
    plaintext[0] = letter0 - factor;
  
    /* 打印要用%c格式,否则看到的就是数字 */ 
    printf("the 2 letter is %c%c\n" 
           , plaintext[0]
           , plaintext[1]); 
}

5分真少。

追问

分可以加! 我看一下先= = 有点没看懂。。。

追答

由于你没有告诉我大写字母的密码,所以这个函数只能转换小写字母,而且超过z以后的数字可能会是乱码,你可以自己加范围判断。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-08
把这个十进制数分解成一个52进制的数,之所以要分解成一个52进制的数,是因为大小写字母一共有52个。这样,你每一位用一个字母来代替,所以两个字母可以表示的最大数字为52^2(也就是52的2次方,即52*52=2704个数字。)
而你列举的这个数字是29811这个明显要比2704这个数大。也就是两个字母没有办法表示这么大的数字。因为两个字母只能表示2704个不同的数字,所以,你只能把这2704个两个字母表示的数字作成一个密码表来与你所要表示的数字进行对应。本回答被网友采纳
相似回答