大小写转换方法

字母有32个,大写的A是65,小写的a是97,A和a之间的差是32

那么大写转小写也就是+32,小写转大写也就是-32

 

做一道题:将字符串str = “HDhsUkOPjsdYnLmAqKSMvc” 转化为小写。

 

我们写一下逻辑

for(int i=0;i<str.Length();i++){

if(str[i]是大写)

就转化为小写

}

 

这样做显然是可以的,但是在这个过程中需要判断Length次,那么有没有一点优美一点的办法呢?

进步的过程其实就是我们一步步追求优美的过程。

 

如果我们把包含大写和小写的所有字母都转化成二进制的话会发现:所有的小写的第五位(从0开始)是1,所有的大写字母的第五位都是0。

----------------------------------------------------------------------------------------------------------------------

大写         十六进制           二进制                            小写              十六进制             二进制

A              41                    01000001                           a                     61               01100001

B              42                    01000010                           b                     62                01100010

C              43                    01000011                           c                     63                01100011

D              44                    01000100                          d                      64                01100100

E              45                    01000101                          e                      65                01100101

..

..

..

----------------------------------------------------------------------------------------------------------------------

32写成二进制是 00100000

+32 其实就是将二进制的第五位置位1

-32 其实就是讲二进制的第五位置位0

那么我们的新思路就是无论这个字符是大写还是小写,我们只需要将其二进制码的第五位变为0或者是1。而与运算和或运算能完成这个完美的操作。

 

使用 | 运算

01000001 (a)

| 00100000

----------------------------

01100001 (A)

 

使用 & 运算

01100001 (A)

& 11011111

-----------------------------

01000001 (a)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值