我正在写一个用于对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