Это объяснение:
int offset = data.indexOf(c); //in your example S
"P3 S255";
^
offset = 3
, затем вы анализируете для offset1, но принимаете другой параметр, а именно "" после offset - но в строке от offset + 1 нет "", см. Выше, где индекс поэтому он возвращает -1, почему?
myString.lastIndexOf(val, from) The index of val within the String, or -1 if not found. But we find something:
offset = 3;
offset1 = 2 ==> offset1 > 0 ==> data.substring(offset + 1, offset + offset1 + 1).toInt()
, что приводит к
data.substring(3 + 1, 3 + 2 + 1).toInt()
"P3 S*4*25*6*5"; which results to 25 as you already know
(необязательно): индекс для завершения подстроки перед .
Таким образом, вы вначале исправили S, изменив на
data.substring(offset + 1, offset + 1 + offset1 + 1).toInt()
Объяснение: Вы начинаете со смещения + 1, это должно быть равно от и до (= та же отправная точка для вашего расчета)