我正在开发一款基于TCP的应用程序,处理的是位打包消息,也就是说:传输/接收的消息不是按字节对齐的。例如,3个比特表示字段1,而19个比特可能表示字段2。我的问题是,是否有人知道一个C#库,可以在这些字节中获取/设置任意范围的比特?我已经在C/C++中看到并创建了类似的工具,但我需要一个100%的C#解决方案,而且我不想再重复造轮子了。我已经查看了BitArray类,但它不允许引用任意范围的比特。
我不知道有哪些BCL类可以提供您想要的功能。但是,您可以使用按位操作(移位,与,或,...)来提取您感兴趣的字段。 例如,要获取从第2位开始大小为5位的字段,请使用: int extract = (source & 0x7C) >> 2;