투케이2K

116. (kotlin/코틀린) [유틸 파일] hex string to byteArray 헥사 문자열 데이터를 바이트 배열로 변환 실시 본문

Kotlin

116. (kotlin/코틀린) [유틸 파일] hex string to byteArray 헥사 문자열 데이터를 바이트 배열로 변환 실시

투케이2K 2022. 12. 19. 22:02

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // TODO [SEARCH FAST] : [hexStringToByteArray] : 헥사 문자열 >> 바이트 배열로 반환
        fun hexStringToByteArray(data: String?) : ArrayList<Byte>? {

            /**
             * // -----------------------------------------
             * [hexStringToByteArray 메소드 설명]
             * // -----------------------------------------
             * 1. 헥사 문자열 >> 바이트 배열로 반환
             * // -----------------------------------------
             * 2. 호출 방법 : C_Encryption.hexStringToByteArray("0x68 0x65 0x6C 0x6C 0x6F")
             * // -----------------------------------------
             * 3. 리턴 데이터 : byte array 바이트 배열 데이터 [104, 101, 108, 108, 111]
             * // -----------------------------------------
             * */


            // [리턴 변수 선언]
            var returnData: ArrayList<Byte>? = null


            // [로직 처리 실시]
            try {

                // [널 여부 체크]
                if (C_Util.stringNotNull(data.toString()) == true) {

                    // [공백 제거 실시]
                    val str = data.toString().replace(" ", "")

                    // [헥사 문자열 제거]
                    var hex = str.replace("0x", "")
                    hex = hex.replace("0X", "")
                    hex = hex.toUpperCase()

                    // [문자열 체크 실시 (나누기 2)]
                    if (C_Util.stringNotNull(hex) == true){

                        var intCount = (hex.length%2) == 0

                        if (intCount == true){ // [짝수 일 경우 : 정상]

                            try {
                                returnData = ArrayList<Byte>()

                                for (i in 0..hex.length step 2) {

                                    if (i < hex.length){ // [문자열 길이보다 작을 때 까지]

                                        // [hex to byte]
                                        var subString = hex.substring(i until i+2)
                                        returnData.add(BigInteger(subString, 16).toByte())

                                    }

                                }
                            }
                            catch (e: Exception) {
                                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 (e: Exception) {
                e.printStackTrace()
            }


            // [로그 출력 실시]
            //*
            Log.i("---","---" + "\n")
            Log.d("//===========//","================================================")
            Log.i("","\n"+"[C_Encryption >> hexStringToByteArray() :: 헥사 문자열 >> 바이트 배열로 반환 실시]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[INPUT :: "+ data +"]")
            Log.i("","\n"+"-----------------------------------------")
            Log.i("","\n"+"[RETURN :: "+ returnData.toString() +"]")
            Log.d("//===========//","================================================")
            Log.i("---","---" + "\n")
            // */


            // [리턴 반환 실시]
            return returnData

        }
 

[결과 출력]

 

 

반응형
Comments