奇技淫巧
Contents
收录遇到的各种奇技淫巧
- 位运算转换大小写
- 转小写
|
|
- 转大写
|
|
- 大小写互换
|
|
原理:
|
|
可以看到二进制ASCII码A与a差的就是100000
, 其代表的是’ ‘, 所以进行一个或运算可以将大写字母第5位的0变成1而不影响别的位, 小写字母不变.
同理, 与’A’进行与运算可以将小写字母的第6-8位从011变成大写字母的010, 而由于’_‘的0-5位全为1, 进行与运算不会影响这几位.
又同理, 将字母与’ ‘进行异或会将第5位的1变成0, 0变成1, 即可实现大小写互换.
总之, 小写字母与大写字母相差32 = 2^5,只要操控第5位即可转换大小写. 大写字母与小写字母中间多的六个字符想必不是巧合, 而是设计时的有意为之.