Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- go
- 리뷰
- 영화
- write
- mutex
- go언어
- Python
- Close
- File
- JavaScript
- API
- json
- http
- windows
- range
- Golang
- bitcoin
- Linux
- GO 언어
- c++
- install
- Callback
- Sync
- FOR
- window
- C
- package
- channel
- tcp
- 책
Archives
- Today
- Total
Code Habit
[c++] bit 읽기 - BitReader 본문
최근 직무가 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 함수를 사용한다.