位运算处理字符串大小写转换

大写转小写

大写字母与小写字母相差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 --> 实现第六位的翻转,小写->大写,大写->小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值