//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?我知道我可以將它轉換回字節,但似乎很愚蠢。爲什麼兩個字節上的異或運算符產生一個int?
僅供參考:http://java.sun .COM /文檔/書籍/ JLS/third_edition/html/conversions.html#5.6.2和http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#5233。我不知道理由,所以我沒有發佈答案。 – 2010-01-04 23:22:54
借調。我無法找到任何描述*爲什麼會發生上述情況的事情,只是它的確如此。 – 2010-01-04 23:24:47
類型促銷存在以下幾個原因。對於按位運算來說,它幾乎比其他所有其他運算都少,但是 - 爲什麼不呢?你總是可以把它扔回去。 – 2010-01-04 23:27:26