最近我看到一段代码将字符转换为小写,如果它已经是小写,它保持不变。
char c = 'A';
c |= ' ';
//c -> 'a'
我正在尝试编写一个可以在不使用 toupper 函数的情况下将字符转换为大写的代码。
目前我能想到的最简单的方法是下面的代码。
char c = 'a';
c = (c | ' ') - ' ';
//c -> 'A'
所以我想知道是否有比这更直接的代码,并且可以达到相同的结果。
任何帮助表示赞赏。
第一个代码块的快速解释
Char | ASCII Code
' ' | 13
'A' | 65
'a' | 97
以及用于位操作的
or
运算符 01000001 (char 'A')
Or 00100000 (char ' ')
= 01100001 (char 'a')
----------------------
01100001 (char 'a')
Or 00100000 (char ' ')
= 01100001 (char 'a')
最佳答案
OR
的逆运算是 AND
与补码。
char c = 'a';
c &= ~' ';
DEMO
解释:
01100001 (char 'a')
AND 11011111 (~ char ' ')
= 01000001 (char 'A')
关于c++ - 如何在不使用 toupper 函数的情况下将字符转换为大写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34529922/