我有一个二进制文件,用C语言编写,其中包含一串长长的数字。 首先它包含4次int(因此前16个字节是4个整数),然后它包含双精度(我假设每8个字节有一个新的双精度)。用C语言格式化读取文件#
在任何点或其他地方都没有空格。现在我需要用C#读取数据,但到目前为止,我所尝试的所有内容都无效,有什么建议吗?
我有一个二进制文件,用C语言编写,其中包含一串长长的数字。 首先它包含4次int(因此前16个字节是4个整数),然后它包含双精度(我假设每8个字节有一个新的双精度)。用C语言格式化读取文件#
在任何点或其他地方都没有空格。现在我需要用C#读取数据,但到目前为止,我所尝试的所有内容都无效,有什么建议吗?
using (BinaryReader br = new BinaryReader(File.Open("file", FileMode.Open)))
{
int a = br.ReadInt32();
int b = br.ReadInt32();
int c = br.ReadInt32();
int d = br.ReadInt32();
double e = br.ReadDouble();
double f = br.ReadDouble();
...
}
这将适用于二进制文件,但不适用于将'fprintf'输出为文本的数字。 –
谢谢,这是一个简单的方法来做到这一点,它完美的作品。 – phil13131
因为它们是文本文件。要说清楚,可以说我给你这个文本“12345”。如果我告诉你这个文本实际上是两个连在一起的整数,你能告诉我我是加入了12还是345还是123和45?在这个文本文件中,数据的第一个字节是字符代码1,第二个字节是字符代码2,依此类推。或者根据编码,每个字符可能有两个或多个字节。但是,如果它是一个二进制文件,并且其中写入了整数1和2345,则数据的前四个字节将为0x00000001,接下来的四个字节将为0x00000929。 – user1004959
你试过了什么? –
对于那些不熟悉C语言的人来说,这是一个二进制文件而不是文本文件?如果是这样的http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx可能会有所帮助... H有用的方法,如ReadInt32等... – Chris
首先,我试图打开文件'FileStream'并使用'fs.Read(byte [4],0,4)'将前四个字节读入数组,然后使用'BitConverter.ToInt32(byte [4],int)'将其转换为INT。 我试着用'char [4]''StreamReader'来做同样的事情,但那也行不通。 – phil13131