私は少し立ち往生しているという問題を抱えており、同僚から、ここは助けを求めるのに良い場所であると知らされました。
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;
レガシーコードの似たようなスタイルのビットフィールドがたくさんあります。Javaと同等の方法を考え出す必要があるのは、Javaを使用してUDPを使用して他のレガシーアプリケーションと通信するコードに取り組んでいるためです。
コードを書き直すオプションがありません。このアプローチは移植性がなく、エンディアンの問題(およびパディング/アライメントなど)があり、コードを書き直すことができれば、より良い方法で実行できる可能性があることを認識しています。残念ながら、この非常に具体的な問題に対する答えが必要です。システムは閉じているので、コンパイラ/オペレーティングシステム/電気ショック療法のすべての可能な組み合わせについて心配する必要はありません。
Java EnumSetを使用するアプローチは、各値を1ビットにすることしかできないと私は信じているため機能しません。たとえば、dの値が10ビットを占める値をパックできる必要があります。
Javaビットセットについては知っていますが、制限があります。私は古いバージョンのJavaを使用しているので、新しいJavaビットセットメソッド(つまり、おそらく確実に役立つvalueOfメソッド)をいくつか持っていません。
これを可能な限り管理しやすくする方法について誰かが何か考えを持っていますか?通信用に実装する必要のあるビットフィールドが10個以上あります。
あなたが提供できるどんな助けにも感謝します!