【问题标题】:xor operation between chars字符之间的异或运算
【发布时间】:2014-05-04 22:44:19
【问题描述】:

我有以下一段 Java 代码,在 Eclipse、Windows 7 中调试时,变量“xoredChar”根本没有显示任何值,不是 null,不是 '',什么都没有。

char xoredChar = (char) (stringA.charAt(j)^stringB.charAt(j));

这是为什么呢?我需要了解如何在 java 中的两个字符之间执行此异或运算。我错过了什么?

【问题讨论】:

    标签: java eclipse encryption xor


    【解决方案1】:

    如果stringAstringB 相同,则异或运算将产生xoredChar = 0

    0 可能在您的 IDE 中显示为空,因为在大多数情况下 0 用作字符串终止符。

    【讨论】:

      【解决方案2】:

      好吧,如果字符串相等,您将返回一个\0,它不是可打印的字符。试试这样的,

      String stringA = "A";
      String stringB = "A";
      int j = 0;
      char xoredChar = (char) (stringA.charAt(j) ^ stringB.charAt(j));
      System.out.printf("'%c' = %d\n", xoredChar, (int) xoredChar);
      

      输出是

      ' ' = 0
      

      【讨论】:

      • 我在 sysout 之后的命令行中打印了以下内容:' ' = 32
      • 那我为什么要占位?
      • @jbendahan 因为这两个字符的异或结果在数学上是 32 - 或一个空格。 'A' ^ 'a' == 32 例如。
      • 至少现在我现在的价值是什么。但是对于下一个字符,xor 给了我一个数字 1。我认为 xor 的二进制结果是另一个 ascii 代码,因此是一个新字符。我错了吗?
      • @jbendahan 并非每个不同的字符都是可打印的。 ASCII 1 与 ASCII 0 不同,但两者都不太可能打印。你到底想解决什么问题?像这样使用char 原语有什么帮助?
      【解决方案3】:

      正如其他答案所提到的,异或相同的字符会产生一个 \0 值,它没有视觉表示。也许您对一个小型应用程序感兴趣,它可以让您了解 XOR 如何处理您的字符串:

      public class Example {
          public static void main(String[] args) {
              String a = "abcde";
              String b = a;
              for (int idx = 0; idx < b.length(); idx++) {
                  System.out.printf("xoring <%s> [%s] with <%s> [%s]\n",
                          a.charAt(0), toBinaryString(a.charAt(0)),
                          b.charAt(idx), toBinaryString(b.charAt(idx)));
                  int c = (a.charAt(0) ^ b.charAt(idx));
                  System.out.printf("result is <%s> [%s]\n",
                          (char) c, toBinaryString(c));
              }
          }
      }
      

      玩得开心!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-03
        • 2017-04-13
        • 1970-01-01
        • 2013-11-12
        • 1970-01-01
        • 2022-01-03
        相关资源
        最近更新 更多