JavaScript可通过位运算快速转换大小写字母:大写转小写用|0x20,小写转大写用^0x20,因ASCII中二者仅第5位不同;需配合65–90和97–122范围校验确保安全。

JavaScript 中可以通过位运算快速实现大小写字母转换,核心在于利用 ASCII 编码中大小写字母的二进制规律:同一字母的大写和小写仅在第 5 位(从 0 开始计数,即 0x20 或十进制 32)不同。
大写转小写:用 OR 运算置位
大写字母 A–Z 的 ASCII 码是 65–90(二进制以 0100xxxx 开头),小写 a–z 是 97–122(0110xxxx)。两者只差第 5 位(值为 32)。
将大写字母与 0x20(即 32)做按位或(|),可安全地把该位置 1,得到对应小写字母:
-
'A'.charCodeAt(0) | 0x20 === 97→'a' -
'Z'.charCodeAt(0) | 0x20 === 122→'z' - 对非字母字符(如数字、符号)同样适用,但结果可能无意义,需自行校验范围
小写转大写:用 XOR 运算翻转位
因为大小写只差一个比特位,用异或(^)可精准翻转该位:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
'a'.charCodeAt(0) ^ 0x20 === 65→'A' -
'z'.charCodeAt(0) ^ 0x20 === 90→'Z' - 注意:
^ 0x20对大小写字母都有效(双向可逆),但同样不校验是否为字母
安全封装:结合 ASCII 范围判断
直接位运算不检查输入,建议加上范围过滤,避免误处理:
- 大写判断:
code >= 65 && code - 小写判断:
code >= 97 && code - 例如:`str.split('').map(c => { const code = c.charCodeAt(0); return (code >= 65 && code
为什么不用 toLowerCase / toUpperCase?
原生方法更通用(支持 Unicode、locale、特殊字符),但位运算是纯 ASCII 场景下的极致优化:无函数调用开销、无字符串解析、单指令级操作。适合高频处理(如编译器词法分析、实时文本流转换)或资源受限环境。
不复杂但容易忽略——只要确保输入是标准 ASCII 字母,位运算就是又快又稳的选择。

















