Управление битовыми данными с помощью C#
-
16-09-2019 - |
Вопрос
Я работаю над приложением на основе TCP, которое обрабатывает битовые сообщения, то есть:Передаваемые/полученные сообщения не выравниваются по байтам.Например, 3 бита представляют поле 1, а 19 бит могут представлять поле 2.Мой вопрос: знает ли кто-нибудь о библиотеке С#, которая может принимать набор байтов и устанавливать/получать произвольный диапазон битов в этих байтах?Я видел и создавал подобные утилиты на C/C++, но мне нужно 100% решение C#, и я не хочу снова изобретать велосипед.
Я рассмотрел класс BitArray, но он не позволяет ссылаться на произвольные диапазоны битов.
Решение
Проверить это решение CodeProject — это управляемый класс BitStream с открытым исходным кодом, который можно вызывать из C#.
Другие советы
Мне не известны какие-либо классы bcl, которые бы обеспечивали то, что вы хотите.Но вы можете использовать побитовые операции (сдвиг, и, или,...) для извлечения интересующих вас полей.
Например, чтобы получить поле размером 5 бит, начинающееся с бита 2, используйте:
int extract = (source & 0x7C) >> 2;