Я использую данные из протокола, который упаковывает 8 значений в 7 байтов как byte[7]
, каждое значение принимает разное количество битов следующим образом:
![enter image description here](https://i.stack.imgur.com/2wlD2.png)
То, что я хочу - это что-то вроде:
int GetInt(byte[], startBit, numBits) //numBits <=32
И я могу назвать, например, GetInt(bytes, 15, 5)
Мне известно о BitArray и я мог бы написать код, используя это, но более производительное решение, вероятно, работало бы непосредственно с байтами, делая битовую маскировку и сдвиг битов за границы byte
. Обе ошибки довольно легко вводить - последний - отличный домашний вопрос!
. Предоставляет ли. Net способы сделать это (используя любой подход), не катя мои собственные логики c? Если бы не я, то, вероятно, просто жестко запрограммировал бы этот конкретный протокол c вместо того, чтобы тратить время на написание чего-то более обобщенного c.