CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): terzeron (microkid)
날 짜 (Date): 2006년 6월 28일 수요일 오후 12시 38분 38초
제 목(Title): Re: [[Q] byte단위 배열에서 bitsize 단위�


이런 매크로를 써보시는 건 어떨지요?

#define GET_DEC0(a) (((*((a) + 0) & 0xFF) << 2) | ((*((a) + 1) & 0xC0) >> 6))
#define GET_DEC1(a) (((*((a) + 1) & 0x3F) << 4) | ((*((a) + 2) & 0xF0) >> 4))
#define GET_DEC2(a) (((*((a) + 2) & 0x0F) << 6) | ((*((a) + 3) & 0xFC) >> 2))
#define GET_DEC3(a) (((*((a) + 3) & 0x03) << 8) | ((*((a) + 4) & 0xFF) >> 0))

5바이트 단위로 증가시켜가면서 char 배열의 포인터를 주면 됩니다.

int i;
char x[] = { ... };
char *p = x;

for (i = 0; i < sizeof (x); i += 5, p += 5) {
    printf ("0x%08X ", GET_DEC0(p));
    printf ("0x%08X ", GET_DEC1(p));
    printf ("0x%08X ", GET_DEC2(p));
    printf ("0x%08X\n", GET_DEC3(p));
}

* 이 코드에는 버그가 존재할 수 있습니다.

---
어떤 성취가, 어떤 조롱이, 또는 어떤 고뇌가 나를 기다리고 있을지 나는 모른다. 
나는 아무 것도 모른다. 그러나 나는 아직 과거의 경이로운 기적의 시대가 영원히 
과거의 것이 되어 버리지는 않았다는 사실을 굳게 믿고 있다.  - Stanislaw Lem -
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.