ABOUT ME

Today
Yesterday
Total
  • .NET Hex Data Swap and Change Address Example
    IT Story/C# & WPF 2022. 6. 19. 21:21
    반응형
    /// <summary>
            /// Hex Data를 Swap 한다
            /// </summary>
            /// <param name="sHexData"></param>
            /// <returns></returns>
            public string funHexSwap(string sHexData)
            {
                string sReturn = string.Empty;     //리턴할 주소값
                string sTemp = string.Empty;       //임시로 저장할 변수
                int nMod;                //자릿수 계산을 위한 나머지 변수
                try {
                    if (sHexData.Length % 4 != 0) {
                        nMod = sHexData.Length % 4;
                        sTemp = sTemp.PadLeft(nMod, '0');
                        sHexData = sTemp + sHexData;
                    }
    
                    for (int i = 0; i < sHexData.Length; i = i + 4) {
                        sReturn = sReturn + sHexData.Substring(i + 2, 2) + sHexData.Substring(i, 2);
                    }
                }
                catch {
                    // this.m_Info.Set_Log(Common.EnuCommon.LogType.CIM, ex.ToString() + ", sHexData:" + sHexData);
                }
                return sReturn;
            }
    
            /// <summary>
            /// 어드레스를 원하는 만큼 증가
            /// </summary>
            /// <param name="sBaseAddress"></param>
            /// <param name="nStep"></param>
            /// <returns></returns>
            public string funAddressAdd(string sBaseAddress, int nStep)
            {
                string sAddress = string.Empty;
                int nAddress = 0;
                try {
                    //어드레스만 뽑아낸다.
                    sAddress = sBaseAddress.Substring(1, sBaseAddress.Length - 1);
    
                    //10진수로 바꾸고 어드레스를 증가한다.
                    nAddress = Convert.ToInt32(this.funHexConvert(sAddress, Common.EnuCommunication.StringType.Decimal)) + nStep;
    
                    //10진수를 16진수 4자리로 바꾼다.
                    sAddress = string.Format("{0:X4}", nAddress);                               
                    sAddress = sBaseAddress.Substring(0, 1) + sAddress;
                }
                catch {
                   // this.m_Info.Set_Log(Common.EnuCommon.LogType.CIM, ex.ToString() + ", sBaseAddress:" + sBaseAddress + ", nStep:" + nStep);
                }
                return sAddress;
            }
    반응형

    댓글

Designed by Tistory.