티스토리 뷰

개발

비트 필드 스트럭쳐

likehood~ 2007. 5. 22. 16:32
혹시 소켓통신이나 시리얼 통신을 할때
최적화된 메모리관리가 필요할때 유용할꺼 같습니다.
예를들어..

    BYTE sendBuf[9];
    sendBuf[0]=0x01;
    sendBuf[1]=0x31;
    sendBuf[2]=0x01;
    sendBuf[3]=0x01;
    sendBuf[4]=0x31;
    sendBuf[5]=0x01;
    sendBuf[6]=0x01;
    sendBuf[7]=0x11;
    sendBuf[8]=0x01;
위와 같이 바이트 배열에다 필요한 HEX값을 넣으면
사이즈는 9바이트겠지여...무조건..
그러나 위와 같은 데이터를 그대로 저장하면서 훨씬 적은 메모리를 차지하는 방법이
비트필드스트럭쳐를 이용하면 될꺼같은 생각에..
struct test{            // Bit Field Structure
    BYTE a:2;
    BYTE b:6;
    BYTE c:3;
    BYTE d:2;
    BYTE e:6;
    BYTE f:3;
    BYTE g:2;
    BYTE h:6;
    BYTE i:2;
};
와 같이 비트별로 지정을 해준다음에
                test t;
    t.a    =0x02;
    t.b                 =0x33;
    t.c    =0x04;
    t.d    =0x02;
    t.e    =0x32;
    t.f    =0x05;
    t.g    =0x01;
    t.h    =0x32;
    t.i    =0x02
이렇게 넣어준다면
5바이트만 사용해서 최소량의 메모리를 써서 똑같은 작업을 할수 있을 듯합니다.
딱 필요한 비트크기만 알면 거기에 맞게 비트필드를 써서 남는 공간을 최대한 절약하는 거져.

서버-클라이언트에서 어떤 프로토콜을 이용해서 소켓통신을 할경우에 유용하지 않을까 해서 두서없는 글 올립니다.
혹시 잘못된점이나 저의 생각에 오점이 있다면 꼭 알려주시기 바랍니다.
그럼 즐거운 하루되시길.

2002-9-9일 작성
likehood

'개발' 카테고리의 다른 글

do not appear this message  (0) 2007.06.25
gSOAP 사용법  (1) 2007.06.21
도대체 가상함수는 어디에다 쓰는 것일까.  (0) 2007.05.22
simpleAdo 2.0  (0) 2007.05.22
c/c++ 간단 토글링  (0) 2007.05.22
댓글