Notice
Recent Posts
Recent Comments
Link
투케이2K
282. (java/자바) [유틸 파일] hex string to byteArray 헥사 문자열 데이터를 바이트 배열로 변환 실시 본문
Java
282. (java/자바) [유틸 파일] hex string to byteArray 헥사 문자열 데이터를 바이트 배열로 변환 실시
투케이2K 2022. 12. 20. 05:29[개발 환경 설정]
개발 툴 : Eclipse
개발 언어 : Java
[소스 코드]
// TODO [SEARCH FAST] : [hexStringToByteArray] : 헥사 문자열 >> 바이트 배열로 반환
public static byte[] hexStringToByteArray(String data){
/**
* // -----------------------------------------
* [hexStringToByteArray 메소드 설명]
* // -----------------------------------------
* 1. 헥사 문자열 >> 바이트 배열로 반환
* // -----------------------------------------
* 2. 호출 방법 : C_Encryption.hexStringToByteArray("0x68 0x65 0x6C 0x6C 0x6F");
* // -----------------------------------------
* 3. 리턴 데이터 : byte array 바이트 배열 데이터 [104, 101, 108, 108, 111]
* // -----------------------------------------
* */
// [리턴 데이터 변수 선언 실시]
byte result[] = null;
// [로직 처리 실시]
try {
// [문자열 데이터 널 판단 수행 실시]
if (C_Util.stringNotNull(data) == true){ // [널이 아닌 경우]
// [공백 제거 실시]
String str = data.replaceAll(" ", "");
// [헥사 문자열 제거]
String hex = str.replaceAll("0x", "");
hex = hex.replaceAll("0X", "");
hex = hex.toUpperCase();
// [문자열 체크 실시 (나누기 2)]
if (C_Util.stringNotNull(hex) == true){
boolean intCount = (hex.length() % 2) == 0;
if (intCount == true){ // [짝수 일 경우 : 정상]
try {
byte[] temp = new byte[hex.length() / 2];
for(int i = 0; i < hex.length() / 2; ++i) {
temp[i] = toByte(hex.substring(i * 2, i * 2 + 2));
}
// [리턴 데이터 삽입]
result = temp;
}
catch (Exception e){
e.printStackTrace();
}
}
}
else {
Log.i("---","---" + "\n");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_Encryption >> hexStringToByteArray() :: 헥사 문자열 >> 바이트 배열로 반환 실시]");
Log.i("","\n"+"-----------------------------------------");
Log.i("","\n"+"[error :: "+ "hex string null 널 임" +"]");
Log.e("//===========//","================================================");
Log.i("---","---" + "\n");
}
}
else {
Log.i("---","---" + "\n");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_Encryption >> hexStringToByteArray() :: 헥사 문자열 >> 바이트 배열로 반환 실시]");
Log.i("","\n"+"-----------------------------------------");
Log.i("","\n"+"[error :: "+ "데이터 null 널 임" +"]");
Log.e("//===========//","================================================");
Log.i("---","---" + "\n");
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 실시]
///*
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[C_Encryption >> hexStringToByteArray() :: 헥사 문자열 >> 바이트 배열로 반환 실시]");
Log.i("","\n"+"-----------------------------------------");
Log.i("","\n"+"[INPUT :: "+String.valueOf(data)+"]");
Log.i("","\n"+"-----------------------------------------");
Log.i("","\n"+"[RETURN :: "+String.valueOf(Arrays.toString(result))+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
// */
// [리턴 데이터 반환 실시]
return result;
}
public static byte toByte(String hexStr) {
byte result = 0;
String hex = hexStr.toUpperCase();
for(int i = 0; i < hex.length(); ++i) {
char c = hex.charAt(hex.length() - i - 1);
byte b = toByte(c);
result = (byte)(result | (b & 15) << i * 4);
}
return result;
}
private static byte toByte(char c) {
switch(c) {
case '0':
return 0;
case '1':
return 1;
case '2':
return 2;
case '3':
return 3;
case '4':
return 4;
case '5':
return 5;
case '6':
return 6;
case '7':
return 7;
case '8':
return 8;
case '9':
return 9;
case ':':
case ';':
case '<':
case '=':
case '>':
case '?':
case '@':
default:
return 0;
case 'A':
return 10;
case 'B':
return 11;
case 'C':
return 12;
case 'D':
return 13;
case 'E':
return 14;
case 'F':
return 15;
}
}
[결과 출력]
반응형
'Java' 카테고리의 다른 글
284. (RxJava) [Observable] just 사용해 생성자 만들기 및 subscribe 구독 결과 메시지 확인 (0) | 2022.12.30 |
---|---|
283. (RxJava) RxJava 기본 개념 설명 (0) | 2022.12.30 |
281. (java/자바) Date , Calendar 사용해 UTC 형식 날짜 데이터를 Korea 한국형 시간으로 포맷 출력 실시 (0) | 2022.11.08 |
280. (java/자바) SecureRandom 사용해 램덤 int , double 값 확인 실시 (0) | 2022.09.29 |
279. (java/자바) regex 정규식 사용해 string 문자열 데이터에서 숫자 (int) 만 출력 실시 (0) | 2022.09.28 |
Comments