lua inside: 高效的tolower

#define ltolower(c)	((c) | ('A' ^ 'a'))

Lua源码中的ltolower是这样实现的, 为什么能管用呢?因为:
'A'的二进制表示是:‭01000001‬,'Z'的二进制表示是:‭01011010‬‬
'a'的二进制表示是:‭01100001‬,'z'的二进制表示是:‭01111010‬
这个方法真是clever啊!但是有两个限制条件:

  1. ASCII编码
  2. 有外部的代码确保calphabetic character

按照同样的思路,toupper可以写成这样:

#define ltoupper(c)	((c) & (~('A' ^ 'a')))