투케이2K

149. (swift5/xcode) [유틸 파일] stringToBcdFormat : String 문자열 >> BCD 포맷 바이트 반환 본문

Swift

149. (swift5/xcode) [유틸 파일] stringToBcdFormat : String 문자열 >> BCD 포맷 바이트 반환

투케이2K 2023. 10. 21. 10:30
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [String 문자열 >> BCD 포맷 바이트 반환]
    // -----------------------------------------------------------------------------------------
    func stringToBcdFormat(data: String) -> Data? {
        
        /*
        // -----------------------------------------
        [stringToBcdFormat 메소드 설명]
        // -----------------------------------------
        1. String 문자열 >> BCD 포맷 바이트 반환
        // -----------------------------------------
        2. 호출 방법 : C_Encryption().stringToBcdFormat(data: "2000")
        // -----------------------------------------
        3. 리턴 반환 : 
         
         (HEX 값) : 0x20 0x00
         (Byte 값) : [32, 0]
        // -----------------------------------------
        */
        
        // [초기 리턴 데이터 변수 선언 실시]
        var returnData: Data? = nil
        var strData = ""
        var byteData = ""
        var hexData = ""
        
        // [인풋 데이터 널 체크 수행 실시]
        if data != nil
            && data.count>0
            && data != ""
            && data.trimmingCharacters(in: .whitespacesAndNewlines) != ""
            && data.trimmingCharacters(in: .whitespacesAndNewlines) != "null"
            && data.isEmpty == false {
            
            // [문자열 추가 설정]
            if (data.count % 2 == 0) { // [짝수로 나누어 떨어지는 경우]
                strData = data
            }
            else { // [홀수 인 경우]
                strData = "0" + data // [짝수로 만듦]
            }
            
            
            // [for 문을 수행하면서 2글자씩 잘라서 hex 문자열 값으로 변경]
            var i = 0
            while (i < strData.count) {
                var sub = i + 2
                hexData = hexData + " " + "0x" + strData.subString(_start: i, _end: sub-1)
                i += 2
            }
            hexData = hexData.trim()
            // S_Log._D_(description: "Hex 문자열 확인", data: [ "HEX :: \(hexData)" ])
            
            
            // [hex string to byte 변환 / 리턴 결과 삽입]
            returnData = hexStringToData(string: hexData)
            byteData = dataToByteString(data: returnData!)
            
        }
        
        // [로그 출력 실시]
        S_Log._D_(description: "String 문자열 >> BCD 포맷 바이트 반환", data: [
            "INPUT :: \(data)",
            "HEX :: \(hexData)",
            "RETURN :: \(byteData)"
        ])
        
        // [리턴 데이터 반환 실시]
        return returnData
    }
 

[결과 출력]

 

================================================================
LOG :: CLASS PLACE :: C_Encryption.swift :: stringToBcdFormat(data:) :: 1365
-------------------------------------------------
LOG :: NOW TIME :: 2023-10-21 10:20:56
-------------------------------------------------
LOG :: DESCRIPTION :: String 문자열 >> BCD 포맷 바이트 반환
-------------------------------------------------
LOG :: INPUT :: 2000
-------------------------------------------------
LOG :: HEX :: 0x20 0x00
-------------------------------------------------
LOG :: RETURN :: [32, 0]
================================================================

 

반응형
Comments