ソースからの着信UDPパケットを適切なJava表現に解析するという骨の折れる作業が与えられました。キッカーは、パケット内に保持されているデータがバイトアラインされていないことです。プロトコルを可能な限り厳しくするために、データフィールドの有無を示すビットフィールドがいくつかあります。
たとえば、ビットインデックス34には、浮動小数点に変換する必要のある24ビットフィールドがあります。ビットインデックス110は、次の3つのフィールドがそれぞれ、その日の時間、分、および秒を含む5ビットおよび6ビットの値であることを示すフラグであり得る。(これらは私が作成したものですが、仕様の内容を表しています)。これらのパケットはおそらく数百ビットの長さです。
仕様が変更される可能性は低いですが、他の同様のパケット形式をデコードするように求められる可能性は完全にあります。
私は確かに必要に応じてビットシフトとマスクを行うことができますが、ビットシフトの地獄に行き着き、さらに多くのパケット形式が発見されたときにそれに溺れるのではないかと心配しています。
タスクをより管理しやすくするためのベストプラクティスやJavaライブラリに関する提案をお聞かせください。