더북(TheBook)

Write()를 템플릿으로 하더라도 특정 오버로드, 예를 들어 bool 같은 건 따로 구현해 두는 편이 좋은데 왜냐하면, bool의 비트 수를 위의 코드로 계산하면 sizeof(bool) * 8, 즉 8비트가 나오는데 bool은 1비트이지 8비트가 아니므로 틀린 계산이다.

warning!

여기서 구현한 Write()는 리틀 엔디언 플랫폼에서만 동작한다. 각 바이트를 주소에 할당하는 방법 때문이다. 이 함수를 빅 엔디언 플랫폼에도 동작하게 하고 싶다면 템플릿 Write()에서 데이터를 WriteBits()에 넘기기 전 바이트 스와핑을 하거나, 빅 엔디언 플랫폼에 맞는 주소 할당 방식을 새로 구현해야 한다.

 

입력 메모리 비트 스트림은 스트림에서 비트열을 반대로 읽어 들이는 것으로, 출력 메모리 비트 스트림과 동작 원리는 유사하다. 구현은 연습 문제로 남겨두었으나 보조 웹 사이트에서 코드를 받아볼 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.