Endian 은 Big-Endian과 Little-Endian으로 구분이 된다.
아래는 두 방식의 차이를 간단히 비교한 표이다.
아래는 두 방식의 차이를 간단히 비교한 표이다.
| 종류 | 0x1234의 표현 | 0x12345678의 표현 |
|---|---|---|
| 빅 엔디언 | 12 34 | 12 34 56 78 |
| 리틀 엔디언 | 34 12 | 78 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];
}
}
댓글 없음:
댓글 쓰기
안녕하세요 :)