//key & hash are both byte[]
        int leftPos = 0, rightPos = 31;
        while(leftPos < 16) {
            //possible loss of precision. required: byte, found: int
            key[leftPos] = hash[leftPos] ^ hash[rightPos];
            leftPos++;
            rightPos--;
        }

为什么在Java中对两个字节进行按位运算会返回一个int?我知道我可以将其转换回字节,但这似乎很愚蠢。

最佳答案

因为语言规范是这样说的。没有任何理由,但我怀疑这些是最可能的意图:

  • 拥有一套简单的规则来涵盖涉及
  • 类型的所有可能组合的算术运算
  • 为了实现高效的实现,CPU内部使用32位整数,其他所有内容都需要进行显式或隐式转换。
  • 关于java - 为什么两个字节的xor运算符会产生一个int?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2003003/

    10-12 23:49