Как прочитать упакованные битовые значения из байтового массива - PullRequest
0 голосов
/ 29 апреля 2020

Я использую данные из протокола, который упаковывает 8 значений в 7 байтов как byte[7], каждое значение принимает разное количество битов следующим образом:

enter image description here

То, что я хочу - это что-то вроде:

int GetInt(byte[], startBit, numBits) //numBits <=32

И я могу назвать, например, GetInt(bytes, 15, 5)

Мне известно о BitArray и я мог бы написать код, используя это, но более производительное решение, вероятно, работало бы непосредственно с байтами, делая битовую маскировку и сдвиг битов за границы byte. Обе ошибки довольно легко вводить - последний - отличный домашний вопрос!

. Предоставляет ли. Net способы сделать это (используя любой подход), не катя мои собственные логики c? Если бы не я, то, вероятно, просто жестко запрограммировал бы этот конкретный протокол c вместо того, чтобы тратить время на написание чего-то более обобщенного c.

...