在下面的函数中,我遇到了一个数组超出界限的问题。它应该像这样将一串数字转换为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