C# Endian 변환

Endian 은 Big-Endian과 Little-Endian으로 구분이 된다.

아래는 두 방식의 차이를 간단히 비교한 표이다.

종류0x1234의 표현 0x12345678의 표현 
빅 엔디언12 3412 34 56 78
리틀 엔디언34 1278 56 34 12


*인텔 계열은 Little-Endian 을 사용하는데 네트워크를 통해 데이터 송수신시에

Big-Endian 측과 통신을 하면 이상한(?) 데이터를 받거나 문제를 발생시키기 때문에

엔디안 변환이 필요하다.



/*
       C# Endian Converter
*/
private void EndianConverter(byte[] val)

        {
            int len = val.Length;
            byte[] tmp = new byte[val.Length];
            int i, j;

            for (i = 0, j = len; i < len; i++, j--)
            {
                tmp[i] = val[j - 1];
            }

            for (i = 0; i < len; i++)
            {
                val[i] = tmp[i];
            }           
        }

        private void EndianConverter(byte[] val, int startIndex, int count)
        {
            //int len = val.Length;
            byte[] tmp = new byte[count];
            int i, j;

            j = startIndex + count;

            for (i = 0; i < count; i++, j--)
            {
                tmp[i] = val[j - 1];
            }

            for (i = 0; i < count; i++, j++)
            {
                val[j] = tmp[i];
            }
        }

댓글 없음:

댓글 쓰기

안녕하세요 :)