我已经被赋予了从源头解析一些传入UDP数据包到适当的Java表示的艰巨任务。 kicker是数据包内保存的数据不是字节对齐的。为尽可能使协议尽可能紧凑,有许多位字段指示数据字段的存在或不存在。如何解析Java中的字节数组中的位字段?
例如,在位索引34处,您可能会发现应该转换为浮点数的24位字段。比特索引110可以是一个标志,指示接下来的3个场是每个包含一天的小时,分钟和秒的5和6比特值。 (这些只是由我组成,但代表了规范说明的内容)。这些数据包可能长达几百比特。
该规范不太可能改变,但完全有可能我会被要求解码其他类似的数据包格式。
我当然可以根据需要进行位移和掩码,但是我担心会发生移位,然后在发现更多数据包格式时淹没在移位中。
我很想听听关于最佳实践或Java库的任何建议,这些建议可能会使任务更易于管理。
尼斯,+1。一旦评论 - 你的课是**不是线程安全的;为了让多线程同时使用*相同的实例需要安全。每个线程需要单独的实例不是线程安全的。 –
确实,谢谢你的提示。 –
我同意,不知道谁更改了该评论。单独的线程实例可以安全地使用(即没有“静态”成员会混淆),所以我认为这是至少是预期的。 –