Управление битовыми данными с использованием C # - PullRequest
5 голосов
/ 17 июля 2009

Я работаю над приложением на основе TCP, которое обрабатывает битовые сообщения, что означает: отправленные / полученные сообщения не выровнены в байтах. Например, 3 бита представляют поле 1, где 19 битов могут представлять поле 2. Мой вопрос: кто-нибудь знает библиотеку C #, которая может принимать набор байтов и устанавливать / получать произвольный диапазон битов в этих байтах? Я видел и создавал подобные утилиты в C / C ++, но мне нужно решение на 100% C #, и я не хочу снова изобретать колесо.

Я смотрел на класс BitArray, но он не позволяет ссылаться на произвольные диапазоны битов.

Ответы [ 2 ]

3 голосов
/ 17 июля 2009

Проверьте это решение CodeProject - это управляемый открытый код класса BitStream, вызываемый из C #.

2 голосов
/ 17 июля 2009

Мне не известны какие-либо классы bcl, которые предоставляют то, что вы хотите. Но вы можете использовать побитовые операции (сдвиг, и, или, ...) для извлечения интересующих вас полей.

Например, чтобы получить поле, начинающееся с бита 2 размером 5 бит, используйте:

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