大写转小写
大写字母与小写字母相差32
A 65 01000001
a 97 01100001-->A的第6位转为1,就能变为a
B 66 01000010
b 98 01100010-->B的第6为转为1,就能变为b
C 67 01000011
c 99 01100011-->同理
...
Y 89 01011001
y 121 01111001
Z 90 01011010
z 122 01111010
32(0x20) 00100000
因为,大写字母和小写字母之间就第6位的值不一样,其他为都是相同的,
所以,只要大写字母的第6位从0-->1, 就能转换为小写字母
ch |= 32 --> 大写转小写
ch |= 0x20
小写转大写
想要把小写转换为大写,只要把小写的第6位1-->0
223(0xdf) 11011111
ch &= 223 --> 小写转大写
ch &= 0xdf
大小写字母的互转
aBcDEf-->AbCdeF
同理,可以看第六位的值,想要互转,就需要转换第六位的值
所以可以使用异或运算
异或: 与0异或,值不变
与1异或,值相反
ch ^= 32 --> 实现第六位的翻转,小写->大写,大写->小写