标签: binaryreader

二进制读取器和写入器同时打开?

我正在编写处理使用哈希的文件的代码。我需要读取一个块,然后对其进行哈希处理,然后写入它,然后读取另一个块,等等。

换句话说,我需要做大量的阅读和写作。我确信这真的很简单,但我只是想由专业人士运行它......

是否可能并且可以接受执行以下操作:

BinaryReader br = new BinaryReader (File.OpenRead(path));
BinaryWriter bw = new BinaryWriter (File.OpenWrite(path));
br.dostuff();
bw.dostuff();
Run Code Online (Sandbox Code Playgroud)

我记得在尝试打开和写入文件时遇到了某种冲突的文件流错误,并且我不确定我做了什么来获得它。问题是两个文件流吗?我可以有一个流来读取和写入吗?

c# filestream binaryreader binarywriter

5
推荐指数
1
解决办法
5075
查看次数

C#BinaryReader.ReadChar在读取NetworkStream时抛出“ System.ArgumentException:输出char缓冲区太小”

NetworkStream从流类型的TCP套接字读取C#时,BinaryReader.ReadChar偶尔会引发异常System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)'

所有缓冲区都有其默认大小(没有一个是手动设置的),并且设置更大的缓冲区大小不会影响该问题。

完全令人沮丧的是:

  • 使用断点并逐步通过ReadCharcall 行时,不会发生异常

  • 如果ReadChar先于该异常,则不会发生该异常Thread.Sleep(1000)(但仍会在较小的超时时发生)

  • 使用BinaryReaderon 时不会发生异常FileStream,在该位置存储了TCP服务器答案的所有精确字节。

那么,从套接字流中缓冲单个字符可能是与时间相关的问题?

c# networkstream binaryreader

5
推荐指数
1
解决办法
7962
查看次数

从byte []转换为string

我有以下代码:

using (BinaryReader br = new BinaryReader(
       File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
    int pos = 0;
    int length = (int) br.BaseStream.Length;

    while (pos < length)
    {
        b[pos] = br.ReadByte();
        pos++;
    }

    pos = 0;
    while (pos < length)
    {
        Console.WriteLine(Convert.ToString(b[pos]));
        pos++;
    }
}
Run Code Online (Sandbox Code Playgroud)

FILE_PATH是一个const字符串,包含要读取的二进制文件的路径.二进制文件是整数和字符的混合.整数是每个1个字节,每个字符作为2个字节写入文件.

例如,该文件包含以下数据:

1HELLO你是如何看待你的//等等

请注意:每个整数都与其后面的字符串相关联.所以1与"HELLO HOW ARE YOU"有关,45与"你在寻找伟大"等等有关.

现在写二进制文件(我不知道为什么,但我必须忍受这个),这样"1"只需要1个字节,而"H"(和其他字符)每个需要2个字节.

所以这是文件实际包含的内容:

0100480045 ......依此类推:

01是整数1的第一个字节0048是'H'的2个字节(H是十六进制的48)0045是'E'的2个字节(E = 0x45)

我希望我的控制台能够从这个文件中打印出人类可读的格式:我希望它打印出"1你好如何",然后"45你看起来很棒"等等......

我正在做的是正确的吗?有更简单/有效的方法吗?我的行Console.WriteLine(Convert.ToString(b [pos])); 什么都不做,但打印整数值,而不是我想要的实际字符.对于文件中的整数是可以的,但是如何读出字符呢?

任何帮助将非常感激.谢谢

c# binaryreader

3
推荐指数
1
解决办法
6975
查看次数

我已经在vb和C#中编写了确切的代码,但它的工作原理并不相同......逻辑完全相同......我希望如此

C#的新手,并试图扩大我的能力.我在VB中有这个代码:

    Private Sub BreakdownFilesToCompare(ByRef file1BReader As BinaryReader, _
                                  ByRef file2BReader As BinaryReader, _
                                  ByRef firstFile As StandardFormatFile, _
                                  ByRef secondFile As StandardFormatFile)

    file1BReader.ReadInt32()
    file2BReader.ReadInt32()

    firstFile.numberOfSeries = file1BReader.ReadInt32
    secondFile.numberOfSeries = file2BReader.ReadInt32

    If firstFile.numberOfSeries <> secondFile.numberOfSeries Then
        WriteToConsole("The number of Elements the two files do not match...Stopping")
        Exit Sub
    End If

    For i As Integer = 0 To firstFile.numberOfSeries - 1

        Dim tempSeriesData1 As New StandardFormatFileSeries
        Dim tempSeriesData2 As New StandardFormatFileSeries

        tempSeriesData1.standardNumOfElements = file1BReader.ReadInt32
        tempSeriesData1.standardSeriesName = GetSeriesName(file1BReader)

        tempSeriesData2.standardNumOfElements = file2BReader.ReadInt32
        tempSeriesData2.standardSeriesName = …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net binaryreader

3
推荐指数
2
解决办法
432
查看次数

BinaryReader - 阅读单个"BIT"?

案例:
再次尝试通过我的NIC捕获数据包,
我开发了2个Extensions用于捕获可变数量的位

    public static string ReadBits ( this BinaryReader Key , int Value )
    {
        BitArray _BitArray = new BitArray ( Value );

        for ( int Loop = 0 ; Loop > Value ; Loop++ )
        {
/* Problem HERE ---> */   _BitArray [ Loop ] = Key . ReadBoolean ( );
        }

        return BitConverter . ToString ( _BitArray . ToByteArray ( ) );
    }

    public static byte [ ] ToByteArray ( this BitArray Key )
    {
        byte [ …
Run Code Online (Sandbox Code Playgroud)

c# bitarray binaryreader binarystream

3
推荐指数
1
解决办法
6009
查看次数

在C#中搜索大二进制文件中十六进制值的有效方法是什么?

HxD编辑器中的相同功能非常相似,我正在实现一个程序,该程序在大二进制文件(> 1 GB)中搜索特定的十六进制值(比如32位).内存是有限的,似乎按块读取块是非常慢的BinaryReader类.HxD在大约12秒内返回搜索结果(几乎达到文件末尾),这是可以接受的.

c# binaryreader

3
推荐指数
1
解决办法
1728
查看次数

从二进制文件快速读取结构数组

是否可以在一次调用中从二进制文件中读取结构数组?

例如,我有一个包含数千个顶点的文件:

struct Vector3 { float x, y, z; }

我需要C#端口作为C++代码:

Vector3 *verts = new Vector3[num_verts];
fread ( verts, sizeof(Vector3), num_verts, f );
Run Code Online (Sandbox Code Playgroud)

c# binaryreader

3
推荐指数
1
解决办法
2301
查看次数

缓冲函数中的 BE 或 LE 是什么意思?

我有一个 PHP 类,用于读取我正在转换为 NodeJS 的二进制数据或在 NodeJS 中找到等效的几个函数。我对这个 BinaryReader 类感兴趣的函数是ReadULongReadUShort。我相信这些意味着读取无符号长整数(4 个字节)和无符号短整数(2 个字节)。当我试图在 NodeJS 中找到这些的等价物时,我对在这些之间使用哪个函数感到困惑:

buf.readUInt16LE(offset, [noAssert])
buf.readUInt16BE(offset, [noAssert])

buf.readUInt32LE(offset, [noAssert])
buf.readUInt32BE(offset, [noAssert])
Run Code Online (Sandbox Code Playgroud)

在这种情况下会LEBE代表什么?

缓冲的文档都位于这里,但我无法找到工作的人的解释在这里

另外,我在 PHP 类上发现了一个常量,上面写着const DEFAULT_BYTE_ORDER = 'L';. 这是L相同LreadUInt32LE?这是关于字节顺序的全部内容吗?

到目前为止,我已经阅读了这些文章:

如果我能得到更多关于二进制阅读的参考资料,我将不胜感激!

buffer binaryreader node.js

3
推荐指数
1
解决办法
4884
查看次数

ReadInt32与ReadUInt32

当我发现奇怪的东西时,我正在修补IP数据包'解析器'.

在解析IP地址时,在C#中

private uint srcAddress; 
// stuff
srcAddress = (uint)(binaryReader.ReadInt32());
Run Code Online (Sandbox Code Playgroud)

诀窍,所以你认为这个VB.Net等效

Private srcAddress As UInteger
'' stuff
srcAddress = CUInt(binaryReader.ReadInt32())
Run Code Online (Sandbox Code Playgroud)

也会做的伎俩.它没有.这个 :

srcAddress = reader.ReadUInt32()
Run Code Online (Sandbox Code Playgroud)

但是会的.

花了一些时间发现,但我发现了什么 - 如果有的话?为什么是这样 ?

c# uint32 binaryreader

3
推荐指数
1
解决办法
537
查看次数

在C#中从二进制值转换为double时出错

我正在尝试读取由C ++程序制成的二进制文件。该文件有一些数字,当我尝试读取它们时,我得到了错误的值。double double

这是从文件读取的十六进制值:

00-67-CC-02-B3-F7-40-CA
Run Code Online (Sandbox Code Playgroud)

期望值

0.2051076530529798
Run Code Online (Sandbox Code Playgroud)

实际值:

-4.9596277989715114E+49
Run Code Online (Sandbox Code Playgroud)

二进制文件类型:double 8字节(c ++

在转换输出C# :()doublebinaryreader.ReadDouble()

这是代码:

reader = new BinaryReader(File.Open(path, FileMode.Open), Encoding.Default);

double value = reader.ReadDouble();
Run Code Online (Sandbox Code Playgroud)

我已经检查过,我在正确的位置使用此命令。为什么我有这种不同的价值

c# c++ binaryreader

3
推荐指数
1
解决办法
97
查看次数