使用C#管理位打包数据

时间:2009-07-17 19:23:14

标签: c# bit-manipulation bit-packing

我正在开发一个基于TCP的应用程序来处理比特包邮件,这意味着:发送/接收的消息不是字节对齐的。例如,3比特表示字段1,其中19比特可以表示字段2.我的问题是,是否有人知道可以采用一组字节并在这些字节内设置/获取任意比特范围的C#库?我见过&在C / C ++中创建了类似的实用程序,但我需要一个100%的C#解决方案,而且我不想再次重新发明轮子。

我查看了BitArray类,但它不允许引用任意位的范围。

2 个答案:

答案 0 :(得分:3)

签出this CodeProject solution - 它是一个可以从C#调用的开源托管BitStream类。

答案 1 :(得分:2)

我不知道任何提供你想要的bcl类。但是你可以使用按位运算(shift,和,或......)来提取你感兴趣的字段。

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

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