我已經被賦予了從源頭解析一些傳入UDP數據包到適當的Java表示的艱鉅任務。 kicker是數據包內保存的數據不是字節對齊的。爲儘可能使協議儘可能緊湊,有許多位字段指示數據字段的存在或不存在。如何解析Java中的字節數組中的位字段?
例如,在位索引34處,您可能會發現應該轉換爲浮點數的24位字段。比特索引110可以是一個標誌,指示接下來的3個場是每個包含一天的小時,分鍾和秒的5和6比特值。 (這些只是由我組成,但代表了規範說明的內容)。這些數據包可能長達幾百比特。
該規範不太可能改變,但完全有可能我會被要求解碼其他類似的數據包格式。
我當然可以根據需要進行位移和掩碼,但是我擔心會發生移位,然後在發現更多數據包格式時淹沒在移位中。
我很想聽聽關於最佳實踐或Java庫的任何建議,這些建議可能會使任務更易於管理。
尼斯,+1。一旦評論 - 你的課是**不是線程安全的;爲了讓多線程同時使用*相同的實例需要安全。每個線程需要單獨的實例不是線程安全的。 –
確實,謝謝你的提示。 –
我同意,不知道誰更改了該評論。單獨的線程實例可以安全地使用(即沒有「靜態」成員會混淆),所以我認爲這是至少是預期的。 –