c# - BinaryReader.PeekChar() 读取多少位?

标签 c# stream binaryreader

我正在努力改进使用 BinaryReader 的流读取器类。它由一个 while 循环组成,该循环使用 .PeekChar() 检查是否存在更多数据以继续处理。

第一个操作是 .ReadInt32(),它读取 4 个字节。如果 PeekChar 只“看到”一个字节(或一位)怎么办?这似乎不是检查 EOF 的可靠方法。

BinaryReader是使用其默认参数构造的,据我了解,它使用 UTF8 作为默认编码。我假设 .PeekChar() 检查 8 位,但我真的不确定。

.PeekChar() 查找多少位? (还有哪些检查 EOF 的替代方法?)

最佳答案

在这里BinaryReader.PeekChar

我读了:

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/

相关文章:

c# - 目录不存在 - 参数名称 : directoryVirtualPath

android - Android HTML5音频播放失败

c# - Stream was not readable是在使用readbinary时引起的

c# - 计算 TcpClient 通过 NetworkStream BinaryReader/BinaryWriter 传输的字节数

c# - 如何使现有的公共(public) API 可供使用它的外部程序员测试?

C# 抽象类,使用匿名而不是声明具体类?

c# - Mongo抛出 "Element name '名称'无效'异常

Java 通过同一套接字发送字符串(文件名)和文件

android - 在Facebook和Youtube上同时直播视频

c# - 如何将字节数组转换为字符串