在linux起作用在Linux Source代碼toupper和tolower的使用XOR位運算
tolower的和topupper的實現如下
static inline unsigned char __tolower(unsigned char c)
{
if (isupper(c))
c -= 'A'-'a';
return c;
}
static inline unsigned char __toupper(unsigned char c)
{
if (islower(c))
c -= 'a'-'A';
return c;
}
我可以使用XOR(^)按位操作,如下所示實現。
如果我使用異或操作,是否有任何潛在的Bug?
c -= 'A'-'a'; ----> c = c^0x20 ; //using xor to convert to lower case to upper case and vice versa
這會更快,因爲...? – Olaf
你爲什麼認爲這會更快? – Art
'c - ='A' - 'a';'而不是'c + ='a' - 'A'' ......只有在Linux中......(爲什麼不能讓事情變得不復雜,不容易?) – Lundin