我在一个基于TCP的应用程序,其处理bitpacked消息,这意味着工作:发送的消息/接收不是字节对齐的。例如3位表示字段1,其中19个比特可以表示字段2.我的问题是,没有人知道,可以采取一组字节,组的C#库/获取这些字节内的位的任意范围?我已经看到在与C / C ++创建类似效用,但我需要一个100%的C#解决方案,我不想再次重新发明轮子。

我看的BitArray类,但它不允许用于参考的比特的任意范围。

有帮助吗?

解决方案

查核此CodeProject上溶液 - 它是一个开放源码的管理位流类从C#调用。

其他提示

我不知道任何BCL类你想要什么提供的。但是你可以使用按位操作(shift,与,或,...)中提取你感兴趣的领域。

例如,为了得到一个字段起始于位2与5位的大小的使用方法:

int extract = (source & 0x7C) >> 2;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top