//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--;
}
Tại sao thao tác bitwise trên hai byte trong Java trả về một int? Tôi biết tôi chỉ có thể bỏ nó trở lại byte, nhưng nó có vẻ ngớ ngẩn.Tại sao toán tử xor trên hai byte tạo ra một int?
Để tham khảo: http: //java.sun .com/docs/sách/jls/third_edition/html/conversions.html # 5.6.2 và http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#5233. Tôi không biết lý do, vì vậy tôi không đăng câu trả lời. –
Đã chọn. Tôi không thể tìm thấy bất cứ điều gì mô tả * tại sao * ở trên xảy ra, chỉ là nó. –
Loại quảng cáo tồn tại vì nhiều lý do. Đối với hoạt động bitwise nó sẽ làm cho ít ý nghĩa hơn so với gần như tất cả những người khác, nhưng sau đó - tại sao không? Bạn luôn có thể truyền lại. –