Я пытаюсь получить позицию STX (0x02) из приведенного ниже байтового массива. Если вы видите сообщение, оно имеет 0x2 в нескольких местах, но единственное, что я хочу, это STX. Я прокручивал его назад, используя цикл for. Я должен зацикливаться назад. Я пробовал несколько способов, но мне трудно получить эту позицию. Один из способов, который я пробовал, но не работал, где бы ни находился 0x2, и имеет элементы из 3 или более между ними и ETX (0x3) перед ним, получает эту позицию этого STX. Но я делаю что-то неправильно, потому что я продолжаю получать ошибку, с которой у меня возникают трудности при разрешении. Не могли бы вы помочь?Java Получить позицию значения с помощью arraylist
EDIT: Если есть лучший способ, то моя логика нахождения этой позиции (STX), отличая ее от другого 0x2, пожалуйста, можете ли вы это предоставить.
EDIT: Мне нужно пройти назад, как это требуется инструкциями, данными мне.
EDIT: Вот код:
//Test 3:
public String Test3(List<Byte> byteList) {
//checking positions of the STX and ETX
//looping through the array backwards
for (int i = byteList.size() - 1; i >= 0; i--) {
if (byteList.get(i) == STX && (i >= 3 && byteList.get(i) == ETX)) {
STXpos = i;
}
}
return STXpos;
}
byte[] validMsgWithRandomData = {0x32,0x32,0x32, //Random data
0x02, // STX
0x31,0x32,0x10,0x02,0x33, // Data 31 32 02 33
0x03, // ETX
0x31^0x32^0x02^0x33^0x03,// LRC calculated from the data (with the DLE removed) plus the ETX
0x2,0x3,0x00,0x02 //Random data
};
Просьба поделиться текстом кода, которую вы используете, чтобы пройти через массив. – CubeJockey
«Мне нужно петлю назад». -> Почему именно? Что касается основной проблемы ... существуют некоторые стандартные алгоритмы поиска шаблона в тексте, например [KMP] (http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80% 93Pratt_algorithm) и [BM] (http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) – Turing85
Как могут оба 'byteList.get (i) == STX' быть истинными, а также' byteList. get (i) == ETX', если 'STX == ETX'? вы пропускаете «i-something» в тесте STX? –