У меня возникла небольшая проблема с попыткой переместить группы 17-битных данных в байтовый массив.Я не хочу проходить пошаговые инструкции, но не могу понять логический цикл.
Мне это нужно, потому что мне нужно вычислить контрольную сумму, сложив всезначения байтов после объединения их вот так.
Итак, вот с чем я борюсь.
У меня есть 16 байтовых массивов.Первые 3 байта массива содержат 17 бит, которые мне нужны.(8 битов от [0]
, 8 битов от [1]
и MSB от [2]
.)
Мне нужно переместить эти 16 17-битных значений в один отдельный байтовый массив.
Первый из них прост:
int index = 0;
myArray[index++] = driverData[driver][0]; //First byte
myArray[index++] = driverData[driver][1]; //Second byte
myArray[index] = (driverData[driver][2] & 0x80) << 7; //First bit of the third byte.
Отсюда, хотя и становится все труднее пытаться перемещать их любым циклом.
driver++;<br>
//Take the 7 MSBs from the data array.
myArray[index++] |= (byte)(driverData[driver][0] & 0x7e >> 1);
//This leaves a single bit left over on driverData[driver][0].
myArray[index] = (byte)(driverData[driver][1] & 0x1 << 7);
Я думаю, вы понимаете картину.Я делаю все это неправильно?Кто-нибудь может указать мне правильное направление?