в следующей функции, у меня есть некоторые проблемы с проблемой Array из Bounds. Он должен преобразовать строку цифр в формат BCD следующим образом: «12345» -> 0x01 0x23 0x45. Длина строки не известна.Строка цифр в ByteArrayOutputStream
public void StringtoBCD(String StringElement)
{
ByteArrayOutputStream in = new ByteArrayOutputStream();
if (!" ".equals(StringElement)){
int i=0;
byte[] tempBCD = StringElement.getBytes();
for (i=0; i<tempBCD.length; i++){
tempBCD[i]=(byte)(tempBCD[i]-0x30);
}
i=0;
if (tempBCD.length %2 !=0){
in.write(0);
}
while(i<tempBCD.length){
in.write((tempBCD[i]<<4)+tempBCD[i+1]);
i=i+2;
}
}
}
Я пытался что-то вроде
while(i<tempBCD.length){
in.write((tempBCD[i]<<4)+tempBCD[i+1]);
if (i+3>(tempBCD.length)){
i+= 1;
}
else {
i+=2;
}
}
без успеха. Я уверен, что это просто, но похоже, что я что-то наблюдаю. Любая помощь приветствуется :)
Конечно, если (! "" .equals (StringElement)) должно быть первым if-условием, но ваше решение выглядит правильно для меня , Благодаря :) – Noob