我在尝试将17位数据组移动到字节数组中时遇到了一些问题。我不想逐步进行,但我无法找到一个逻辑循环。
我需要这样做是因为我要通过像这样组合它们并添加所有字节值来计算校验和。
所以这就是我正在努力解决的问题。
我有16个字节数组。数组的前3个字节包含我想要的17位。(从
我需要将这16个17位值移动到一个单独的字节数组中。
第一个很容易:
我需要这样做是因为我要通过像这样组合它们并添加所有字节值来计算校验和。
所以这就是我正在努力解决的问题。
我有16个字节数组。数组的前3个字节包含我想要的17位。(从
[0]
中获取8位,从[1]
中获取8位,以及从[2]
中获取MSB。)我需要将这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);
我想你已经明白了图片的意思。我是不是做错了什么?有没有人可以指点我正确的方向?
driverData[driver][1]
结构比data1
、data2
结构更容易,因为你可以迭代driver++
。 (另外,请注意描述中说[1]
、[2]
、[3]
,但代码中说[0]
、[1]
、[3]
。) - sarnold