[HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth

lesto:

estraendo così correttamente gli ultimi 2 bit meno significativi.

?? che significa?
la speigazione è che in java non esistono gli unsigned, e quando fai il cast automatico java prende il bit più a sinistra e lo usa come bit del segno.
facendo l'and bitwise con 0xff (o 0x00ff, stessa roba) invece non fai entrare in campo il cast, 0xFF, anche se vale "solo" 255 è un int, e l'and logico non necessita di cast, ma semplicemente si "accontenta" di fare l'and sui bit della variabile di tipo più piccolo.
Non ho provato, ma in teoria anche questo dovrebbe funzionare;

valhex = (mybite | 0)

alla fine ho risolto usando int al posto di byte nel programma, grazie