C++ 十进制转二进制 ASCII码大小写转换

2018-02-20 19:38:14来源:cnblogs.com作者:左百工人点击

分享

参考博客:<C++>十进制数转换成二进制显示

由于我要实现的功能局限于char类型,所以我根据参考写了一个。

 1 #include <iostream> 2 using namespace std; 3 void binary(char num); 4 int main() 5 { 6     binary('a'); 7     return 0; 8 } 9 void binary(char num)10 {11     char bitMask = 1 << 7;12     for (int i = 0; i < 8; i++)13     {14         cout << (bitMask & num ? 1 : 0);15         num = num << 1;16         if(i == 3)17             cout << ' ';18     }19 }

运行结果如图:

为了美观,我在中间加了一个空格。接下来讨论ASCII码大小写转换的问题了,想必编程初学者都知道大写字母和小写字母之间相差的值是固定的。

大小写转换只需要加(+)或减(-)32就行了。但是,遇到不知道需要转换的字母是大写还是小写该怎么办?

请看如下代码:

 1 #include <iostream> 2 using namespace std; 3 void binary(char num); 4 int main() 5 { 6     for (char big = 'A', small = 'a'; small <= 'z'; big++, small++) 7     { 8         cout << big << "   "; 9         binary(big);10         cout << "    |    ";11         cout << small << "   ";12         binary(small);13         cout << endl;14     }15     return 0;16 }17 void binary(char num)18 {19     char bitMask = 1 << 7;20     for (int i = 0; i < 8; i++)21     {22         cout << (bitMask & num ? 1 : 0);23         num = num << 1;24         if(i == 3)25             cout << ' ';26     }27 }

我将大写字母的ASCII码和小写字母的ASCII转成二进制进行对比。

我们发现,大写字母的ASCII码二进制形式中,第六位都为0,相反小写字母的都为1。也就是说,我将第六位置1就是转成小写字母, 置0就是转成大写字母。置1需要用到按位或,置0需要用到按位与。

 1 #include <iostream> 2 using namespace std; 3 void toupper(char & ch); 4 void tolower(char & ch); 5 int main() 6 { 7     char a = 'A'; 8     cout << "first:" << a << endl; 9     toupper(a);10     cout << "upper:" << a << endl;11     tolower(a);12     cout << "lower:" << a << endl << endl;13     a = 'a';14     cout << "first:" << a << endl;15     toupper(a);16     cout << "upper:" << a << endl;17     tolower(a);18     cout << "lower:" << a << endl;19     return 0;20 }21 void toupper(char & ch)22 {23     ch = ch & 0XDF; //1101 111124 }25 void tolower(char & ch)26 {27     ch = ch | 0X20;//0010 000028 }

大小写字母转换就这样完成了。

NOTE:对于初学者来说void toupper(char & ch);这种写法可能没见过。可以百度一下引用的相关知识。或者可以用指针来替代,甚至直接的值传递,把结果作为返回值。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台