Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

int extract = (source & 0x7C) >> 2;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top