这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值。
ASCII :
ASCII 编码里包括了128个字符。用 十进制 0 到 127 来表示 。那就对了, 0 到 127 不就是 128个字符吗。 每一个数字都代表一个字符。看ASCII 编码表
我们来看看代码:
#include <stdio.h> #include <stdlib.h> #define toascii(c) (((unsigned char)(c))&0x7f) //因为0x7f代表127,ascii码从0x7f开始到0xff结束 int main(void) { int ret = 0 ; ret = toascii('a'); //小a的ascii printf("a的ascii码:%d\n",ret); ret = toascii('A'); //大a的ascii printf("A的ascii码:%d\n",ret); ret = toascii('z'); //小z的ascii printf("z的ascii码:%d\n",ret); ret = toascii('Z'); //大Z的ascii printf("Z的ascii码:%d\n",ret); return 0 ; }运行结果:
从运行结果对照ASCII码表,证明算法的运算结果是正确的。