Implementierung eines C-Bitfeldes in Java

Ich habe ein Problem, bei dem ich ein bisschen festgefahren bin, und wurde von einem Kollegen darüber informiert, dass dies ein guter Ort ist, um Hilfe zu suchen.

Ich versuche, ein C-Bitfeld in Java zu implementieren. Hier ist ein grobes Beispiel (ich habe momentan nicht den tatsächlichen Code vor mir).

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;

Ich habe ein gutes Stück Bitfelder ähnlichen Stils aus altem Code. Der Grund, warum ich eine gleichwertige Methode für Java finden muss, ist, dass ich an Code arbeite, der Java verwendet, um mit anderen Legacy-Anwendungen über UDP zu kommunizieren.

Ich habe keine Möglichkeit, den Code umzuschreiben. Mir ist bewusst, dass dieser Ansatz nicht portierbar ist, Endianness-Probleme (und Auffüllen / Ausrichten usw.) hat und besser gemacht werden könnte, wenn ich den Code umschreiben könnte. Leider brauche ich eine Antwort auf dieses sehr spezifische Problem. Das System ist geschlossen und ich muss mich nicht um jede mögliche Kombination von Compilern / Betriebssystemen / ect kümmern.

Der Ansatz, ein Java-EnumSet zu verwenden, wird nicht funktionieren, da meiner Meinung nach jeder Wert nur ein Bit enthalten kann. Ich muss in der Lage sein, Werte mit zum Beispiel dem Wert von d zu packen, das 10 Bits besetzt.

Ich kenne das Java-Bitset, aber es hat Einschränkungen. Ich verwende eine ältere Version von Java, und daher habe ich einige der neueren Java-Bitset-Methoden (nämlich die valueOf-Methoden, die wahrscheinlich sicherlich helfen würden) nicht.

Hat jemand eine Idee, wie man das so beherrschbar wie möglich machen kann? Ich habe über 10 Bitfelder, die ich für meine Kommunikation implementieren muss.

Vielen Dank für jede Hilfe, die Sie anbieten können!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage