Intercambiando caso de una sola palabra alfabético

Rahul Verma:

He encontrado este código para el bombeo caso, pero estoy un poco confundido sobre cómo funciona.

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"));
  }
}

Entendí que se realiza un bucle sobre cada personaje. Sin embargo, no puedo hacerme a la línea (especialmente el operador XOR)

r += c ^= 32; 

Me refiero a lo que es el significado de 32. ¿Cómo se intercambia el caso.

¿Puede alguien ayudarme?

Eugene:

Esta es la forma en ASCII fue puesta a punto.

Carta de a-ztener el conjunto de bits 6-ésima a 1; mientras que las cartas de A-Ztienen el conjunto 6-ésimo bit a 0.

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

haciendo un XOR con un intinvertirá que el 6-ésimo bit.

Se podría hacer un poco de depuración y verse a sí mismo:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202270&siteId=1
Recomendado
Clasificación