问题标签 [binaryreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
242 浏览

windows-phone-7 - BinaryReader.Read 连接丢失时不会抛出 IOException

我使用 HttpWebResponse.BeginGetResponse() 方法向我的服务器发出请求。该请求将 AllowReadStreamBuffering 设置为false,以便不会缓冲数据。在“请求完成”通知中,我执行以下操作(不包含错误处理代码):

我的问题是在从流中读取数据期间(在 while 循环期间)我无法检测到连接错误。这种行为非常奇怪:它完成了读取操作系统在缓存中的所有数据,然后返回“readSize = 0”,就像“流结束”一样。我期待 streamReader.Read() 抛出一个 IOException 异常,但它没有!我试图在某处找到流失败标志,但似乎没有(Stream/BinaryReader/HttpWebResponse)。请帮忙!

我使用三个场景对此进行了测试,并且都具有相同的行为:

  1. 使用手机到 PC 的 USB 连接
    • 使用 PC USB 连接连接到 Internet 的电话
    • 几次 streamReader.Read() 成功调用后,我禁用了 PC 网卡
  2. 使用 WIFI 连接
    • 手机使用 WIFI 连接到互联网
    • 几次 streamReader.Read() 成功调用后,我关闭了 WIFI 路由器
  3. 使用 WIFI 连接
    • 手机使用 WIFI 连接到互联网
    • 经过几次 streamReader.Read() 成功调用后,我移除了 WAN 电缆(因此它无法访问 Internet)。

谢谢!米海

0 投票
1 回答
23351 浏览

c# - 通过 BinaryReader 将字节数组解压缩为字符串产生空字符串

我正在尝试解压缩字节数组并使用二进制读取器将其转换为字符串。当下面的代码执行时,inStream 位置从 0 变为数组的长度,但 str 始终是一个空字符串。

0 投票
3 回答
3902 浏览

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

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

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

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

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

0 投票
2 回答
1325 浏览

c# - BinaryReader.ReadInt32 结果与输入文件相比意外,为什么?

我对特定的BinaryReader操作感到困惑。

使用十六进制编辑器 (UltraEdit) 查看二进制文件时,前四个字节是:52 62 38 11.

当用 a 遍历同一个文件时BinaryReader,如果我ReadInt32()先调用,我希望 int 值为 1,382,168,593。

.ReadInt32(): 从当前流中读取一个 4 字节的有符号整数,并将流的当前位置提前 4 个字节。

相反,我得到 288,907,858。

显然我错过了一些明显的东西......谁能解释发生了什么?

0 投票
6 回答
5938 浏览

c# - BinaryWriter 问题 - “代码在 Write() 方法之间添加了一些字节”

我尝试使用 BinaryWriter 然后 BinaryReader 做一些代码。当我想写时,我使用方法 Write()。但问题是在两行 Write 方法之间出现了一个新字节,它在十进制 31(sometines 24)的 ASCII 表中。你可以在这张图片上看到它:

在此处输入图像描述

您可以看到索引 4 处的字节(第 5 个字节)是 ASCII 十进制值 31。我没有将它插入那里。如您所见,前 4 个字节是为数字(Int32)保留的,接下来是其他数据(主要是一些文本 - 现在这不重要)。

正如您从我编写的代码中看到的那样: - 在第一行输入一个数字 10 - 在第二行文本中“这是一些文本......”

中间的第 5 个字节(12 月 31 日)怎么来的?

这是我的代码:

0 投票
2 回答
303 浏览

.net - Delphi Prism:BinaryWriter“Write 方法”是否与 Delphi 的 Writeln 方法一样工作?

我正在使用 Delphi Prism 并使用 BinaryWriter 创建和写入二进制文件,如下所示。

我对你的问题是这个。write 方法是否在没有换行符或回车的情况下每行或字节后的字节或字符后的字节写入?

我问这个问题的原因是因为在没有特定数量的字符(如字符数组)的情况下写入和读取字符串时我很困惑。

例如:

这就是我编写程序的方式,它似乎工作正常,但正如我所说,我很困惑。

当它是字符串数据类型时,它如何知道要读取或写入多少字节或字符长度而不给它特定的读取长度?

0 投票
1 回答
1359 浏览

c# - 网络套接字上的 C# BinaryReader.ReadString

我有一个服务器/客户端应用程序。

两者在通信时都使用 BinaryReader/Writer。

当客户端和服务器快速交换消息时,很多是在一秒钟内,我关闭服务器(通过内置命令,有序关闭)大部分时间(但不总是)客户端的 BinaryReader.ReadString() 方法抛出一个EndOfStreamException,这很好。我不明白的是为什么这个异常不将 TcpClient.Connected 属性更改为“false”?

这将无限循环。我认为 Connected 属性会在网络读/写不成功时发生变化。如果 BinaryReader 抛出异常,那么它没有成功读取,是吗?

如果我输入 BinaryWriter.Write(),则无限循环将被打破,因为 Connected 属性更改为“false”。

相关问题,EndOfStreamException 是否总是表示网络连接中断,或者是否意味着临时问题?

0 投票
1 回答
2393 浏览

c# - 如何在 C# 中将 BinaryReader 转换为 Stream?

我必须完全阅读“.bin”文件并将流传递给函数。我尝试使用 BinaryReader 来逐字节读取值,我想将整个文件作为字符串流传递给我的函数。StreamReader 的使用提供了垃圾信息,看起来 StreamReader 无法正确读取 bin 文件。

提前致谢。

0 投票
2 回答
4751 浏览

c# - 提高 BinaryReader 的性能

我目前正在编写一个缓存BaseStream.PositionBaseStream.Length属性的 BinaryReader。这是我到目前为止所拥有的:

我不想提供LengthandPosition属性,而是想创建一个BaseStream属性,允许我将我的PositionandLength属性公开为FastBinaryReader.BaseStream.Positionand FastBinaryReader.BaseStream.Length,这样我现有的代码将与原始BinaryReader类保持兼容。

我该怎么做呢?

0 投票
2 回答
1350 浏览

c# - 如何使用 BinaryReader 并将数据正确输入文件?

我正在做我的家庭作业,我完全被困住了!我要做的是使用已经定义的输入并使用 saveDataTo() 方法将其保存到文件中,并使用 readDataFrom() 方法读取输入。

我被困在第一部分。我不确定是否必须先初始化 Program.cs 文件中的数据?

我不知道,我被困住了。这是代码,并希望获得一些提示,我可以如何做到这一点。

- 编辑 -

我可以为 saveDataTo() 和 readDataFrom() 方法添加说明:

saveDataTo() 方法采用 BinaryWriter 的参数。该方法将 book 对象的所有 5 个属性的值写入与 writer 关联的文件流(关联在 Program 类的 Main() 方法中完成)。此方法内无需打开和关闭文件流和二进制写入器。

readDataFrom() 方法接受 BinaryReader 的参数。该方法从与阅读器关联的文件流中读取 Book 对象的所有五个属性的值(关联在 Program 类的 Main() 方法中完成)。此方法内无需打开和关闭文件流和二进制读取器。

所以这给了我一个线索,我应该使用并分配要保存在文件中的属性?

- 编辑 -

更新了那里的代码。我确实对保存到文件中的内容有疑问。我没有被显示价格。这是为什么?

程序.cs

出版物.cs

图书.cs

问候。

帮助需要者。