2009-07-17 4 views
5

나는 비트 패키지 된 메시지를 처리하는 TCP 기반 응용 프로그램에서 작업하고 있습니다. 전송/수신 된 메시지는 바이트 단위 정렬되지 않습니다. 예를 들어 3 비트는 필드 1을 나타내며, 19 비트는 필드 2를 나타낼 수 있습니다. 제 질문은 누구나 C# 라이브러리를 알고 바이트 세트를 가져 와서 그 바이트 내에서 임의의 비트 범위를 설정하거나 설정할 수 있습니까? 나는 &이 C/C++에서 비슷한 유틸리티를 생성 한 것을 보았지만 100 % C# 솔루션이 필요하고 휠을 다시 발명하고 싶지 않습니다.C#을 사용하여 비트 압축 데이터 관리

BitArray 클래스를 살펴 보았지만 비트 범위를 임의로 참조 할 수 없습니다.

답변

3

체크 아웃 this CodeProject solution를 - 그것은 오픈 소스의 C#에서 호출 비트 스트림 클래스를 관리합니다.

+0

완벽. 정확히 내가 무엇을 찾고 있었는지. – nathan

2

나는 당신이 원하는 것을 제공하는 bcl 클래스를 모른다. 그러나 bitwise 연산 (shift, and, or, ...)을 사용하여 원하는 필드를 추출 할 수 있습니다. 예를 들어

은 사용 필드가 5 비트의 크기와 비트 2에서 시작 얻을 :

int extract = (source & 0x7C) >> 2; 
+0

이것은 현재 C++ 구현에서 사용하고있는 메소드입니다. 구현을 C#으로 이식 할 필요가 없으며 타사 라이브러리를 사용할 수 있기를 바랬습니다. 나는 이것을 수행하기 위해 매끄러운 C# 라이브러리에 관심이있다. 나는 단지 "바퀴를 다시 발명"하고 싶지 않았습니다. – nathan