//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--;
}
Perché un'operazione bit a bit su due byte in Java restituisce un int? So che potrei semplicemente restituirlo a byte, ma sembra sciocco.Perché l'operatore xor su due byte produce un int?
per riferimento: http: //java.sun .com/docs/libri/JLS/third_edition/html/conversions.html # 5.6.2 e http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#5233. Non conosco la logica, quindi non sto inviando una risposta. –
Secondato. Non sono riuscito a trovare nulla che descrivesse * perché * si verifica quanto sopra, solo che lo fa. –
La promozione del tipo esiste per diversi motivi. Per le operazioni bit a bit avrebbe molto meno senso che per quasi tutti gli altri, ma allora - perché no? Puoi sempre restituirlo. –