这个问题可能看起来很独特,但我在解决它时遇到了困难。
我有一个字节数组(每行一个DW)并尝试获取每9个字节的字节值。 以下是字节数组的样子:
0 1 2 3
4 5 6 7
8| 9 10 11
12 13 14 15
16 17| 18 19
20 21 22 23
24 25 26| 27
28 29 30 31
32 33 34 35|
.......
这是我需要用来从上述专利中获取值的定义函数:
getValue(int DWOffset, int highBit, int lowBit)
//DWOffset indicates the row of the data.
//highBit indicates the ending bit
//lowBit indicates the starting bit
我的问题是如何通过使用for循环从数据(出现的地方)获取每9个字节?可以使用
找到数据长度data.getLength(); //which returns the total number of bytes in the data
到目前为止,我可以获得前两行的价值:
for(int i = 0; i < data.getLength()/(4*2); i++){
getValue(i*2, 31, 0); //DW i
getValue(i*2 + 1, 31, 0); //DW i+1
}
答案 0 :(得分:0)
问题的一部分在于你似乎在混合范式,从概念上将其视为二维和一维数组。将其视为二维,您需要一个返回单个字节的getValue(int row,int column)。然后你可以做这样的事情:
final int TOTAL_BYTES_TO_INCLUDE = 9;
byte[] byteArray[] = new byte[TOTAL_BYTES_TO_INCLUDE];
int arrayIndex = 0;
for (int r = 0; r++; r < number_of_rows) {
for (int c = 0; c++; c < 4) {
byteArray[arrayIndex++] = getValue(r, c);
if (arrayIndex >= TOTAL_BYTES_TO_INCLUDE) {
... do something with your byte array ...
arrayIndex = 0;
}
}
}
有一些极端情况需要处理,比如如果可用值的数量不是9的倍数会发生什么,会发生什么。如果读入的值导致字节溢出会发生什么。我不会在每次迭代之前重新初始化数组,但是留下一些东西会有任何风险。