如果简单的实现字符的大小写转换

如果简单的实现字符的大小写转换

看一下大小写的acsii码的二进制数据

1 0110   0001
2 0100   0001
唯一不同的只有第6位,所以如果转换成大写,将第6位改为0;如果转换成小写,将第6位改为1。
所以直接对该位异或就可以了
也就是与0x20异或,即0010 0000
转换方法
 1 #include  < stdio.h >
 2 #include  < ctype.h >
 3 int  main( int  argc, char   * argv[])
 4 {
 5    int c;
 6    for(;(c=getchar())!=EOF;)
 7    {
 8        if(isalpha(c))
 9            c ^= 0x20;
10        putchar(c);
11    }

12    return 0;
13}

你可能感兴趣的:(如果简单的实现字符的大小写转换)