使用C#管理位压缩数据

5
我正在开发一款基于TCP的应用程序,处理的是位打包消息,也就是说:传输/接收的消息不是按字节对齐的。例如,3个比特表示字段1,而19个比特可能表示字段2。我的问题是,是否有人知道一个C#库,可以在这些字节中获取/设置任意范围的比特?我已经在C/C++中看到并创建了类似的工具,但我需要一个100%的C#解决方案,而且我不想再重复造轮子了。
我已经查看了BitArray类,但它不允许引用任意范围的比特。
2个回答

3

完美。正是我所寻找的。 - nathan

2

我不知道有哪些BCL类可以提供您想要的功能。但是,您可以使用按位操作(移位,与,或,...)来提取您感兴趣的字段。

例如,要获取从第2位开始大小为5位的字段,请使用:

int extract = (source & 0x7C) >> 2;

这是我当前C++实现中正在使用的方法。我希望不必将实现移植到C#,而可以使用第三方库。我对能够完成此任务的一些流畅C#库很感兴趣。我只是不想再次“重新发明轮子”。 - nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接