У меня возникли проблемы с извлечением пучка парных чисел из массива байтов. С помощью C Я был в состоянии сделать это:Java-извлечение удваивается из байтового массива
int16_t* data = (int16_t*)byte_array;
double st = data[0]; //first two bytes should be st or 29811
double et = data[9]; //last two bytes should be et or 29797
double accX = data[1];
double accY = data[2];
double accZ = data[3;
double gyroX = data[4];
...
>> st = 29811
>> et = 29797
Но теперь я пытаюсь переписать свой код с помощью Java (Android). Данные я Пришествие правильно, потому что я могу сделать:
double s = data[0];
Log.i(TAG, "s: "+s); //ascii value for s is 115
>> s: 115
Но мне нужно, чтобы быть в состоянии вытащить данные между ЗБ и др которые я думаю, что все двойники. Я пробовал что-то вроде этого:
double st = data[0]&0xff<<8|data[1];
>> st: 115
Какой из них не работает. У меня нет много других идей, и я не очень хорошо разбираюсь в малой манипуляции с низким уровнем.
Я рекомендую хотя бы использовать круглые скобки ... '((данные [0] & 0xff) << 8) | (данные [1] & 0xff) ' – immibis
Есть ли причина для' & 0xff'? Я не думал, что есть, но я видел массу других ответов, где люди это делали. –
'byte' подписаны на Java. Таким образом, 255 становится -1, 254 становится -2, ..., 128 становится -128. '& 0xff' - это быстрый способ отменить это. – immibis