我正在寫一個用於對byte[]
緩衝區進行處理的類。它包含如char Peek()
和string ReadRestOfLine()
的方法。c-sharp上的byte []緩衝區處理
問題是我想添加對unicode的支持,我真的不知道應該如何更改這些方法(它們現在只支持ASCII)。
如何檢測緩衝區中的下一個字節是否是unicode序列(utf8或utf16)?我該如何將它們轉換爲char
?
更新
是,這個類是類似於StreamReader
了一點,但不同之處在於它會避免創建對象(如string
,char[]
)等,直到整個期望字符串已被發現。它用於高性能套接字框架。
例如:假設我想寫一個代理,它只會檢查HTTP請求中的URI。如果我在哪裏使用StreamReader
,我將不得不在每次完成新接收時創建一個臨時字符數組,以查看是否收到了新的行字符。
通過使用直接針對使用的byte[]
緩衝區的類,我只需遍歷解析器中的緩衝區以瞭解是否可以完成下一步。沒有臨時對象被創建。
對於大多數協議,在頭部區域使用ASCII和UTF8不會是一個問題(請求正文可以使用StreamReader
進行分析)。我只關心如何避免創建不必要的對象。
你爲什麼直接使用這種字符串而不是'Encoding'類? – Oded 2011-06-10 13:29:18
爲什麼不使用'MemoryStream'類作爲你的基礎類型?你爲什麼不把它轉換成'string'? – 2011-06-10 13:30:10