투케이2K

308. (java/자바) [유틸 파일] stringToBcdFormat : 문자열 >> BCD 포맷 바이트 반환 실시 본문

Java

308. (java/자바) [유틸 파일] stringToBcdFormat : 문자열 >> BCD 포맷 바이트 반환 실시

투케이2K 2023. 3. 1. 10:54
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // 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;
    }
 

[결과 출력]

 

D///===========//: ================================================
I/: [C_Encryption >> stringToBcdFormat :: 문자열 >> BCD 포맷 바이트 반환 실시]
I/: -----------------------------------------
I/: [INPUT :: 2000]
I/: -----------------------------------------
I/: [HEX ::  0x20 0x00]
I/: -----------------------------------------
I/: [RETURN :: [32, 0]]
D///===========//: ================================================

 


 

반응형
Comments