我有一個字節數組(從客戶端發送爲字節數組的UTF-8編碼的字符串)。 該消息應具有以下格式:解析消息長度不確定的分隔符(最佳做法?)java
'數字' '時間戳' 'STR1' 'STR2'
例如
1 2000-01-31T20:00.00的第一str中的第二STR
很明顯,'數字'和'時間戳'很容易從字節數組中讀取。 'str1'的開始位置也可以被計算出來。 考慮到'str1'和'str2'可以有任何內容(任何長度),可以使用什麼類型的分隔符來知道'str1'結束和'str2'開始的時間?或者有沒有其他的技巧來解析這樣的事情。
note1:消息格式由我提供,所以只要所有4條信息位於字節數組中,任何具有不同格式/順序的解決方案都會執行。注意2:我知道我可以編碼str1,以便它不包含我的自定義分隔符,但是我想避免編碼/解碼數據的開銷。註釋3:我能想到的一個解決方案是在從客戶端發送數據時在其前面寫入str1的長度。 E.g'number''timestamp''str1length''str1''str2'
有沒有其他的技巧可以想到?
感謝
嗨ItzWarty,謝謝你的回覆。 您給出的格式爲: number timestamp length_of_string1 string1 length_of_string_two string2。 我想我只需要length_of_string1而不是length_of_string2。由於字符串2的長度是從字符串1的末尾到字節數組的末尾。你有沒有別的想法? – Bob 2010-02-25 04:25:14
我不知道@ItzWarty意思是不能發送「|」通過電線等... – 2010-02-25 05:09:05
我見過一些項目,人們用管道分隔字符串「|」或「^]」,所以他們會發送string1 +「^]」+ string2或string1 +「|」+ string2 ...但您的字符串中不能有分隔符。我的措辭是......羅嗦,我編輯了我的主要帖子並修正了它。謝謝 – Warty 2010-02-25 05:21:13