5

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

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

4

2 回答 2

3

查看此 CodeProject 解决方案- 它是一个可从 C# 调用的开源托管 BitStream 类。

于 2009-07-17T19:39:46.117 回答
2

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

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

int extract = (source & 0x7C) >> 2;
于 2009-07-17T19:35:25.127 回答