다음 함수에서 배열 바운더리 문제로 인해 몇 가지 문제가 있습니다. "12345"-> 0x01 0x23 0x45와 같이 BCD 형식으로 문자열을 변환해야합니다. String의 길이는 알려져 있지 않습니다. 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;
}
}
같은 것을 시도했다. 나는 그것이 단순하다는 것을 아주 확신하지만, 나는 여기서 어떤 것을 감독하는 것처럼 보인다. 어떤 도움을 주시면 감사하겠습니다 :)
물론 if (! "". equals (StringElement))가 첫 if 조건이되어야하지만 솔루션이 나에게 맞아 보인다. . 감사 :) – Noob