为了账号安全,请及时绑定邮箱和手机立即绑定

交换单个字母单词的大小写

交换单个字母单词的大小写

慕斯709654 2019-04-17 18:15:57
我发现这个代码用于交换案例,但我对它是如何工作有点困惑。class Main {   private static String swapCase(String s) {       String r = "";       for (char c : s.toCharArray())           r += c ^= 32; // this line       return r;   }   public static void main(String[] args) {     System.out.println(swapCase("Hello"));   }}我明白它会遍历每个角色。但是,我无法绕过线(特别是XOR运算符)r += c ^= 32;我的意思是什么的重要性32。如何交换案件。有人能帮助我吗?
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

这就是ASCII的设置方式。

来自a-z第6位的信件设置为1; 而来自A-Z第6位的字母设置为0

32 = 100000 // the 6-th bit is set to 1

使用int将执行XOR 反转第6位。

您可以做一些调试并看到自己:

for (char c : s.toCharArray()) {
        System.out.println(Integer.toBinaryString((int) c));
        c ^= 32; // this line
        System.out.println(Integer.toBinaryString((int) c));}


查看完整回答
反对 回复 2019-05-15
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

让我们看看这张表,你会明白为什么


a = 01100001    A = 01000001 

b = 01100010    B = 01000010 

c = 01100011    C = 01000011 

d = 01100100    D = 01000100 

e = 01100101    E = 01000101 

f = 01100110    F = 01000110 

g = 01100111    G = 01000111 

h = 01101000    H = 01001000 

i = 01101001    I = 01001001 

j = 01101010    J = 01001010 

k = 01101011    K = 01001011 

l = 01101100    L = 01001100 

m = 01101101    M = 01001101 

n = 01101110    N = 01001110 

o = 01101111    O = 01001111 

p = 01110000    P = 01010000 

q = 01110001    Q = 01010001 

r = 01110010    R = 01010010 

s = 01110011    S = 01010011 

t = 01110100    T = 01010100 

u = 01110101    U = 01010101 

v = 01110110    V = 01010110 

w = 01110111    W = 01010111 

x = 01111000    X = 01011000 

y = 01111001    Y = 01011001 

z = 01111010    Z = 01011010 

与上部和下部版本的唯一区别是第5位(从0开始计数)。这就是为什么使用简单的XOR面罩,您可以来回更换外壳。


查看完整回答
反对 回复 2019-05-15
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

对于ASCII编码,32是小写字母和大写字母之间的差异。它是2的幂,它的二进制表示是一个1位: 0010 0000

通过应用XOR赋值运算符,可以在字符值中更改此位。有效地添加(如果该位为0 in c)或减去(bit为1 in c)32。

这对于字母AZ和az都可以正常工作,但很可能对输入中的大多数其他字符都是无意义的。


查看完整回答
反对 回复 2019-05-15
  • 3 回答
  • 0 关注
  • 439 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信