*(int32_t *)(data + i) & 0xFFFFFF /* Little Endian */
ㅅㅅㅅ(178.162)2015-11-12 11:03
stdint.h 인클루드 시켜야 한다. standard way로 코딩하고 싶으면 unsigned short 이런 건 사이즈가 고정되어 있다고 생각하지 말고 그냥 int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t 이런거 써라.
ㅅㅅㅅ(178.162)2015-11-12 11:03
다른 방법: ((struct { long value:24; } *)(data + i))->value
3바이트짜리 타입을 만들면 되겠지!
ㄴ어케요?
char data[3];
*(int32_t *)(data + i) & 0xFFFFFF /* Little Endian */
stdint.h 인클루드 시켜야 한다. standard way로 코딩하고 싶으면 unsigned short 이런 건 사이즈가 고정되어 있다고 생각하지 말고 그냥 int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t 이런거 써라.
다른 방법: ((struct { long value:24; } *)(data + i))->value
아 long 대신에 signed 로 정정.