4비트를 하나의 데이터 타입으로 어떻게 만드나요..?

kaos의 이미지

캐릭터 한글자가 8비트로 표현될때 4비트씩 잘라서 구조체에 담고 싶은경우
어떻게 담아야 합니까...?

너무 초보적인건지 몰라도 이런게 있는지 부터 궁금합니다.

내 마음대로 몇비트를 데이터 타입으로 정의할수 있나요...?

정장혁의 이미지

자료멤버형: 비트폭; 형식으로 구조체를 지정하세요.
예)
#define UPPER 0x0F
#define LOWER 0xF0
struct Test{
unsigned char upper: 4;
unsigned char lower: 4;
};
struct Test data;

data.upper = char&UPPER;
data.lower = char&LOWER;

yui의 이미지

몇가지 사소한 수정을 하겠습니다.

정장혁 wrote:
자료멤버형: 비트폭; 형식으로 구조체를 지정하세요.

예)

//#define UPPER 0x0F
#define UPPER 0xf0
//#define LOWER 0xF0
#define LOWER 0x0f

struct Test{
    unsigned char upper: 4;
    unsigned char lower: 4;
};
struct Test data;

//data.upper = char&UPPER;
data.upper = (char&UPPER) >> 4;
data.lower = char&LOWER;

@ 또는 위와같이 struct를 만드시고
struct Test* data = (struct Test*) & char;
와 같이 하셔도 될겁니다.
endian 때문에 재사용성이 매우 떨어지는 코드이긴 합니다만...

kaos의 이미지

감사드립니다.