Notice
Recent Posts
Recent Comments
Link
투케이2K
4. (Format/Encryption) [포맷] : [BCD] 포맷 설명 : [Int] [Byte] [Hex] 본문
Format&Encrypt
4. (Format/Encryption) [포맷] : [BCD] 포맷 설명 : [Int] [Byte] [Hex]
투케이2K 2023. 3. 1. 11:06[구 분]
TITLE : DATA FORMAT
FORMAT : Int , Byte , Hex
[BCD 포맷 설명]
1. BCD 란 이진화된 십진수라는 의미입니다
2. BCD 는 십진수 0 ~ 9까지 숫자를 사용합니다
3. BCD 포맷 사용 이유는 원본 2000 이란 데이터를 바이트로 변환하면 4바이트 공간을 사용하게되는데,
BCD 포맷 을 사용하면 2바이트 만으로 표시할 수 있습니다. (용량감소)
[BCD 포맷 수행 로그]
D///===========//: ================================================
I/: [C_Encryption >> stringToBcdFormat :: 문자열 >> BCD 포맷 바이트 반환 실시]
I/: -----------------------------------------
I/: [INPUT :: 2000]
I/: -----------------------------------------
I/: [HEX :: 0x20 0x00]
I/: -----------------------------------------
I/: [RETURN :: [32, 0]]
D///===========//: ================================================
[BCD 포맷 소스 코드]
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [stringToBcdFormat] : 문자열 >> BCD 포맷 바이트 반환
// -----------------------------------------------------------------------------------------
public static byte[] stringToBcdFormat(String data){
/**
* // -----------------------------------------
* [stringToBcdFormat 메소드 설명]
* // -----------------------------------------
* 1. 문자열 >> BCD 포맷 바이트 반환
* // -----------------------------------------
* 2. 호출 방법 : C_Encryption.stringToBcdFormat("2000");
* // -----------------------------------------
* 3. 리턴 데이터 :
* 헥사 : 0x20 0x00
* 바이트 : [32, 0]
* // -----------------------------------------
* */
// [리턴 데이터 변수 선언 실시]
byte[] returnData = null;
String strData = String.valueOf(data);
String hex = "";
// [로직 처리 실시]
try {
// [널 판단 및 정수 구성 여부 판단 실시]
if (C_Util.stringNotNull(strData) == true && C_Util.stringIsNumber(strData) == true){ // [널이 아닌 경우]
// [배열 길이 설정]
int arrayLength = 0;
if ( (strData.length()%2) == 0 ){ // [짝수로 나누어 떨어지는 경우]
arrayLength = strData.length() / 2;
}
else { // [홀수 인 경우]
arrayLength = (strData.length() / 2) + 1;
strData = "0"+strData; // [짝수로 만듦]
}
returnData = new byte[arrayLength];
// [for 문을 수행하면서 2글자씩 잘라서 hex 문자열 값으로 변경]
for (int i=0; i<strData.length(); i+=2){
int sub = i+2;
hex = hex + " " + "0x"+strData.substring(i, sub);
}
// [hex string to byte 변환]
returnData = C_Encryption.hexStringToByteArray(hex);
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 실시]
///*
S_Log.ltd("================================================");
S_Log.cnt("["+ACTIVITY_NAME+" >> "+C_Util.getNowMethod(1)+" :: 문자열 >> BCD 포맷 바이트 반환 실시]");
S_Log.cnt("-----------------------------------------");
S_Log.cnt("[INPUT :: "+String.valueOf(data)+"]");
S_Log.cnt("-----------------------------------------");
S_Log.cnt("[HEX :: "+String.valueOf(hex)+"]");
S_Log.cnt("-----------------------------------------");
S_Log.cnt("[RETURN :: "+String.valueOf(Arrays.toString(returnData))+"]");
S_Log.lbd("================================================");
// */
// [리턴 데이터 반환 실시]
return returnData;
}
반응형
'Format&Encrypt' 카테고리의 다른 글
6. (Format/Encryption) [포맷] : [Socket] 소켓 통신 바이트 포맷 설명 (0) | 2023.05.01 |
---|---|
5. (Format/Encryption) [포맷] : [Little Endian] 리틀 엔디안 , [Big Endian] 빅 엔디안 포맷 설명 (0) | 2023.03.03 |
3. (Format/Encryption) [포맷] : [진법] 기본 설명 : [Binary] [Byte] (0) | 2023.02.26 |
2. (Format/Encryption) [포맷] : [XML] 설명 , 특징 , 구조 , 문법 설명 (0) | 2023.02.25 |
1. (Format/Encryption) [포맷] : [JSON] 설명 , 특징 , 구조 , 문법 설명 (0) | 2023.02.25 |
Comments