카테고리 없음
[c++] bit 읽기 - BitReader
코드베어
2023. 4. 22. 11:59
최근 직무가 Client 개발에서 Server로 변경 되었다. Codec 관련 업무를 맏고 있는데 Metadata나 헤더 파싱하는데 bit 단위로 접근해야 하는 경우가 많더라.. 하여 간단하게 Bit값 읽어오는 함수 두개를 만들어 보았다.
- 1Byte의 데이터를 입력 받아 index 번째 있는 bit 값을 가져오는 함수이다 ( 0 or 1 )
UINT8 GetBit(UINT8 nData, UINT nIndex)
{
if (8 <= nIndex) {
return 0;
}
UINT8 nOut = nData;
nOut <<= nIndex;
nOut >>= 7;
return nOut;
}
- 1Byte의 데이터에서 index번째부터 count만큼 읽어오는 함수이다.
UINT8 GetBits(UINT8 nData, UINT nIndex, UINT nCount)
{
int nEnd = nIndex + nCount;
if (nEnd > 8) {
return 0;
}
int nOut = 0;
for (int i = nIndex; i < nEnd; i++)
{
nOut = (nOut << 1) | GetBit(nData, i);
}
return nOut;
}
위의 GetBit 함수를 사용한다.