728x90
안드로이드 블루투스나 RS232 등 시리얼 통신을 이용할 때
byte 배열로 데이터를 전송해야 하는 경우가 많이 생기는데
대부분 안드로이드 시스템에서는 EditText나 TextView를 통해서 문자열 스트링 값을 가져옵니다.
이렇게 가져온 문자열을 byte로 변환해서 데이터를 전송해야 하는데
간단한 함수구현을 통해서 Hex String을 Byte Array로 변환하는 방법을 알아보겠습니다.
먼저 아래와 같은 Hex 형태의 문자열이 있다고 하면
String hexString = "0101ff";
데이터 전송을 위해 byteArray 형태로 변환합니다.
그러면 바이트 배열에는 다음과 같은 데이터가 들어가게 됩니다.
{0x01,0x01,0 xff}
위에 변환된 byte를 보면 문자 "01"이 0x01로 변환된 것을 볼 수 있습니다.
즉 문자 두 개당 1개의 byte로 변환되기 때문에 아래와 같은 함수 구조가 가능합니다.
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
return data;
}
위 함수를 작성한 뒤에 변환 시에는 다음과 같이 적용합니다.
String str = "0101ff01ee"
byte[] data = hexStringToByteArray(str);
728x90
반응형
'안드로이드' 카테고리의 다른 글
ArrayList 응용 (6) | 2022.03.24 |
---|---|
배열보다 편한 ArrayList (2) | 2022.03.24 |
안드로이드 스튜디오 느릴 땐 메모리 설정 (22) | 2022.03.04 |
안드로이드 Stack Clear (9) | 2022.03.03 |
안드로이드 View BackgroundColor 변경 (4) | 2022.03.02 |
댓글