투케이2K

533. (kotlin/코틀린) [유틸 파일] getByteToString : Byte 바이트 배열 불필요 공간 제거 및 String 문자열 반환 본문

Kotlin

533. (kotlin/코틀린) [유틸 파일] getByteToString : Byte 바이트 배열 불필요 공간 제거 및 String 문자열 반환

투케이2K 2024. 11. 15. 18:31

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Kotlin

- 개발 툴 : AndroidStudio

- 구분 : 유틸 파일

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [RETURN] getByteToString : Byte 바이트 배열 불필요 공간 제거 및 String 문자열 반환
    // -----------------------------------------------------------------------------------------
    fun getByteToString(bytes: ByteArray?): String {
        /**
            * // -----------------------------------------
            * [stringRangeLength 메소드 설명]
            * // -----------------------------------------
            * 1. Byte 바이트 배열 불필요 공간 제거 및 String 문자열 반환
            * // -----------------------------------------
            * 2. 호출 방식 :
            *
            * C_Util.getByteToString(byteArray);
            * // -----------------------------------------
            * 3. 리턴 데이터 :
            *
            * String 문자열 데이터
            *
            * AS-IS : {"reg_name":"TWOK"}���
            * TO-BE : {"reg_name":"TWOK"}
            * // -----------------------------------------
            */


        // [리턴 변수 선언]
        var returnData = ""
        var M_LOG = ""

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

            // TODO [인풋 데이터 널 체크]
            if (bytes != null && bytes.size > 0) {


                // [바이트 배열 뒤부터 순회하면서 0이 아닌 값이 나올 때 까지 찾음]
                var endIdx = -1
                var i = bytes.size - 1

                while (0 <= i) {
                    if (bytes[i].toInt() != 0) {
                        endIdx = i
                        break
                    }
                    i--
                }

                if (endIdx >= 0) {

                    val subBuffer = ByteArray(endIdx + 1)
                    System.arraycopy(bytes, 0, subBuffer, 0, endIdx + 1)

                    returnData = String(subBuffer, Charsets.UTF_8)
                    M_LOG = "Success :: Byte To String"

                } else {
                    M_LOG = "Error :: endIdx Search Error"
                }

            } else {
                M_LOG = "Error :: Input Data Validation Check Error"
            }

        } catch (e: Exception) {
            S_Log._printStackTrace_(null, S_FinalMsg.LOG_BUG_STATE, null, e)
            M_LOG = "Exception :: " + e.message.toString()
        }


        // [로그 출력 실시]
        //*
        // ===============================================================
        S_Log._D_("Byte 바이트 배열 불필요 공간 제거 및 String 문자열 반환", arrayOf(
            "M_LOG :: $M_LOG",
            "RETURN :: $returnData"
        ))
        // ===============================================================
        // */


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

// --------------------------------------------------------------------------------------

 

반응형
Comments