小编sha*_*dog的帖子

在Java中实现C风格的位域

我有一个问题,我有点困惑,一位同事告诉我,这将是一个寻求帮助的好地方.

我试图在Java中实现C风格的位域.这是一个粗略的例子(此时我没有在我面前的实际代码).

typedef union
{
  typedef struct
  {
     unsigned short a :1;
     unsigned short b :1;
     unsigned short c :2;
     unsigned short d :10;
  } bitfield;

  unsigned short bitmap;
}example_bitfield;
Run Code Online (Sandbox Code Playgroud)

遗留代码中我有一些类似的样式位域.我需要为Java提供等效方法的原因是我正在研究将使用Java与使用UDP的其他遗留应用程序进行通信的代码.

我没有重写代码的选项.我知道这种方法不可移植,有字节序问题(和填充/对齐等),如果我能够重写代码,可以做得更好.不幸的是,我需要回答这个非常具体的问题.系统已关闭,因此我不需要担心编译器/操作系统等每一种可能的组合.

使用Java EnumSet的方法不起作用,因为我认为只允许每个值为一位.我需要能够打包值,例如占用10位的d值.

我知道Java Bitset但它有局限性.我使用的是旧版本的Java,因此我没有一些较新的Java Bitset方法(即可能肯定有帮助的valueOf方法).

有没有人有任何关于如何使这个尽可能易于管理的想法?我有超过10个位域需要为我的通信实现.

感谢您提供任何帮助!

java bitset bit-fields

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

bit-fields ×1

bitset ×1

java ×1