我们都知道大写字母从ASCII为0x41(A)开始,而小写字母从ASCII为0x61(a)开始,平时一般的大小写转换也就是 +/- 32 这种方法,那么我们可不可以从另一个角度去解决这个问题呢?
观察 0x41 与 0x61 ,它们的二进制分别为
0x41 -> 0100 0001
0x61 -> 0110 0001
从这里,我们是否可以得到启发,那就是,通过操作第5bit位,来实现大小写字母的转变呢?
小写->大写,我们可以把第5bit位清0
大写->小写,我们可以把第5bit位置1
那么我们就试一试。
设定两个掩码UptoLowMask = 0x20; LowtoUpMask=0x0df;
测试代码
#include
int main()
{
char low = 'c';
char up = 'D';
unsigned char UptoLowMask = 0x20;
unsigned char LowtoUpMask = 0x0df;
printf("'c' to Up = %c, 'D' to Low = %c\n", \
low & LowtoUpMask , up | UptoLowMask);
return 0;
}
结果:
mifei@P-I-mi:~$ ./a.out
'c' to Up = C, 'D' to Low = d
果然如此,那么,我们就得到了另一种大小写转换的算法
C AND C++ 另一种大小写转换算法
标签:
C AND C++
Subscribe to:
Post Comments (Atom)
0 评论:
Post a Comment