我正在努力改进使用 BinaryReader
的流读取器类。它由一个 while 循环组成,该循环使用 .PeekChar()
检查是否存在更多数据以继续处理。
第一个操作是 .ReadInt32()
,它读取 4 个字节。如果 PeekChar
只“看到”一个字节(或一位)怎么办?这似乎不是检查 EOF 的可靠方法。
BinaryReader
是使用其默认参数构造的,据我了解,它使用 UTF8 作为默认编码。我假设 .PeekChar()
检查 8 位,但我真的不确定。
.PeekChar()
查找多少位? (还有哪些检查 EOF 的替代方法?)
最佳答案
我读了:
ArgumentException: The current character cannot be decoded into the internal character buffer by using the Encoding selected for the stream.
这清楚地表明,读取的内存量取决于应用于该流的编码。
编辑
实际上根据MSDN的定义是:
Returns the next available character and does not advance the byte or character position.*
实际上,如果这是一个字节或更多,则取决于编码...
希望这对您有所帮助。
关于c# - BinaryReader.PeekChar() 读取多少位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182073/