将 char 转换为小写的棘手方法 - 以及如何反之
本文关键字:方法 何反之 转换 char | 更新日期: 2023-09-27 18:32:13
在这个堆栈溢出答案中,有一段代码可以将字符转换为小写:
// tricky way to convert to lowercase
sb.Append((char)(c | 32));
(char)(c | 32)
发生了什么,怎么可能做相反的事情来转换为大写?
这是一个便宜的ASCII技巧,仅适用于该特定编码。 不建议这样做。 但是要回答您的问题,反向操作涉及屏蔽而不是组合:
sb.Append((char)(c & ~32));
在这里,您采用 32
的按位逆并使用按位 AND。 这将迫使该位关闭,并使其他位保持不变。
这样做的原因是 ASCII 字符集的布局使得小写字符的小写和小写字符的小 5 位相同,并且仅第 6 位(32
或 00100000b
)不同。 使用按位 OR 时,将添加位。 当用反向掩码时,将删除位。