나는 C를 찾고 있어요 ++ 인 API 세트를 포함하는 몇 가지 구조 (양호하게는 템플릿 클래스)에 임의의 비트 크기의/때 unserialize (사용자 정의) 유형 효율적으로 직렬화 비트. 나는 boost::dynamic_bitset
이 좋은 시작이라고 생각하지만 내장-유형을 추가하는 함수/연산자를 포함하지 않는 등 uint8_t
, uint16_t
등 난이 다음 예에서와 같은 일을 할 쉬운 비트 수준 Serialiation
boost::dynamic_bitset bs;
bs.append((uint8_t)123);
bs.append((uint16_t)12345, big_endian);
스트림 운영자 상태에 의존 엔디안-행동 aswell 지원해야합니다
bs << (uint8_t)(123);
bs << little_endian;
bs << (uint16_t)(12345); // serialized as little_endian
bs << big_endian;
는 또한 Boost.Serialization과 (부스트 샌드 박스에서) Boost.Endian 알고. 나는 비트 레벨까지 확장 된 것을 원합니다.
나는boost::dynamic_bitset
의 멤버 함수
void append(Block block);
및
template <typename BlockInputIterator>
void append(BlockInputIterator first, BlockInputIterator last);
는 대부분의 사용자에게 너무 낮은 수준이다 생각합니다. 나는이 새로운
append
함수에서 재사용되어야한다고 생각한다. 더 많은 표현 템플릿을 최적화하기 위해 연속적인 serialization을
dynamic_bitset
에 추가하기 전에 더 큰 (바이트 크기) 블록으로 그룹화하는 데 사용할 수 있습니다.
비트 집합? – leftaroundabout