본문으로 바로가기

[ C# ] 16진수 문자열 Byte 변환 함수

category 분류없음 2018.12.27 09:33


소켓 통신을 하다 보면 디버깅을 하기 위해 

수신된 데이터를 Hex 값으로 변환하여 로그를 남기는 경우가 많습니다.


이때, 데이터를 전달하는 송신부와 데이터를 수신하는 수신부 모두 한명의 개발자가

개발하는 경우는 혼자서 알아서 보내는 쪽이든 받는 쪽이든 프로그램을 수정하면 그만이지만

타 회사 개발자와 원거리에서 협업하는 경우나 하드웨어로 부터 데이터를 수신해야 하는 경우가

생기기도 하는데요.


이럴때는 수신받은 데이터를 16진수로 로그에 남기고, 

그대로 받은걸 다시 전송하는 역할을 하는 프로그램을 개발해서 테스트를 하기도 합니다.


이럴때 필요한 

16진수 HEX 문자열로 저장된 데이터를 다시 Byte 배열로 변환하여 전송하는 함수 입니다.


        public byte[] ConvertByteArray(String strHex)
        {
            int iLength = strHex.Length;
            byte[] bytes = new byte[iLength / 2];

            for (int i = 0; i < iLength; i += 2)
            {
                bytes[i / 2] = Convert.ToByte(strHex.Substring(i, 2), 16);
            }
            return bytes;
        }


byte[] sendBytes = ConvertByteArray(haTestData[_iPacketCnt]);

ex)3030B4DDC8FB3B4C6F636B3B2FC1A4BBF33B2FC1A4BBF33B2FC1A4BBF33B2FC0C0B4E4BEF8C0BD3B2FC1A4BBF33B2FBEF8C0B


위의 16진수 문자열을 다시 Byte Array로 변환하는 함수



♡ 여러분의 공감이 빅에너지에게 에너지원입니다. 공감, 좋아요 부탁합니다~