Причина, по которой вы получаете 0
для _data[1]
, заключается в том, что старшие 3 байта теряются при преобразовании в byte
.
Ваш промежуточный результат выглядит так:
Distance && 0xff00 = 0x00005e00;
Когда это преобразуется в байт, вы сохраняете только младший байт:
(byte)0x00005e00 = 0x00;
Вам нужно сдвинуть на 8 бит:
0x00005e00 >> 8 = 0x0000005e;
перед тем, как привести к byte
и присвоить _data[1]