Ciao. Nel mio progetto avevo bisogno di metodi che mi convertissero un numero di tipo short in un array di 2 byte e viceversa. Pensavo che lo shift e il cast esplicito fossero sufficienti ma leggendo qua e la sulla rete ho trovato che questi due metodi vanno realizzati in questo modo:

codice:
//da short senza segno in array di 2 byte
private byte[] toByte (short dati) 
{
	return new byte[]{(byte)(data & 0xff),(byte)((data >>> 8) & 0xffff)};
}


//da array di 2 byte a short senza segno
private int toShort (byte[] data)
{		
	short tmp= (short)(0xff & data[0] | 0xffff & data[1] << 8 ) ;
	return  tmp;
}
Non capisco perché sia necessario effettuare il confronto bit a bit per realizzare questi due metodi. Se qualcuno mi può dare quanche dritta a riguardo gliene sarei grato.