C# 读取C++写的 二进制文件

图片说明图片说明

    二进制文件是c++写的, 现在用C# 把这个二进制文件的字段读出来,用C# 自带的二进制文件读写方法读出来的数据乱码, 是因为C++ 和 C# 的数据类型所占用的字节长度不一致导致的吗,具体应该怎么读,求大神指教

2个回答

byte[] filecnt = File.ReadAllBytes("文件名");
string sitecode = "";
for (int i = 0; i < 8; i++)
{
if (filecnt[i] != 0)
sitecode += ((char)filecnt[i]).ToString();
else
break;
}
你先看看上面的代码能不能读到sitecode,如果可以,采纳本回答,帮你接着写下去。

weixin_37617896
年少的隔壁老王 https://pan.baidu.com/s/1BGq0VsR0cItIH3udzmQ8kw
10 个月之前 回复
weixin_37617896
年少的隔壁老王 你能加下我qq吗? 641254423
10 个月之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复weixin_37617896: 把你的数据文件传给我,我好帮你完成
10 个月之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复weixin_37617896: 采纳本回答,发一个样板数据文件到网盘,以及对应预期的结果。我帮你写。
10 个月之前 回复
weixin_37617896
年少的隔壁老王 这个可以读到,但是文件里面有好多其他不同类型的数据,麻烦你把这几种类型的按指针的顺序读出来,先行谢过
10 个月之前 回复

应该和字节长度没关系。
用流全部读取文件试下。用utf-8读取。

    string str = File.ReadAllText(path, Encoding.UTF8);
    Console.WriteLine("ReadAllText读所有行:\n" + str);
weixin_37617896
年少的隔壁老王 这样肯定不行
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# 读取C++写的 二进制文件
![图片说明](https://img-ask.csdn.net/upload/201811/14/1542175705_511897.png)![图片说明](https://img-ask.csdn.net/upload/201811/14/1542175755_947766.png)rn rn 二进制文件是c++写的, 现在用C# 把这个二进制文件的字段读出来,用C# 自带的二进制文件读写方法读出来的数据乱码, 是因为C++ 和 C# 的数据类型所占用的字节长度不一致导致的吗,具体应该怎么读,求大神指教
c#读取二进制文件c#读取二进制文件
c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件c#读取二进制文件
读取c++写的二进制文件
请问在读取c++写的二进制文件之前怎样得到文件的大小,数据存储好象和java的不一样吧,rn请各位帮忙
关于C#读取Delphi写的二进制文件
Delphi结构体:rnTFileRec = packed Recordrn FileId: byte;rn FileVar:byte;rn RecCount: integer;rnend;rnrnTTempPoleRec = packed Recordrn Id :word; rn ParantId : word;rn x : integer; rn y : integer; rn SubLine: array [0..49] of char;rn PoleName: array [0..49] of char;rn interval: byte;rn DevCount: byte;rnend;rnrn我转成C#的结构体如下:rn [StructLayout(LayoutKind.Sequential)]rn public struct FileStructrn rn public byte FileId;rn public byte FileVar;rn public Int32 RecCount;rn rnrn [StructLayout(LayoutKind.Sequential)]rn public struct PoleRecordrn rn public UInt16 Id;rn public UInt16 ParentId;rn public Int32 x;rn public Int32 y;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]rn public byte[] SubLine;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]rn public byte[] PoleName;rn public byte interval;rn public byte DevCount;rn rn可以理论上来说应该第一个是6字节,第二个结构体是114字节rn可我用Marshal.SizeOf()算出来的第一个是8字节,第二个是116字节都多出来两字节rn不知道为什么?
C语言 二进制文件的读取
现在我把十进制1001写成十六进制E903的形式存储,要求读取的时候读成03E9 ,用程序实现请教高手!
C语言读取二进制文件
脚本语言使用习惯了基本上不愿意去考虑C语言的文件处理功能,若不是近期看到了类似的东西又遇上了这方面的需要,或许这个简单的功能我永远也不会去碰。        其实,解决C语言的二进制未见解析很简单,就是一个简单fopen函数的使用而已。其余的操作跟常用的脚本语言其实也没有太大的差异。代码如下:   1 #include "stdio.h"   2    3 FILE*fp;   4 
c ,读取二进制文件.
[code=C/C++]rn#include rn#include rn#include rn#include rnrnint main(int argc, char *argv[])rn FILE *fp = fopen("/tmp/aout", "wb+");rn int a =846;rn fwrite(&a,sizeof(int),1,fp);rn fclose(fp);rnrn fp = fopen("/tmp/aout", "rb");rnrn fseek(fp,0,SEEK_SET);rn fread(&a,sizeof(int),1,fp);rn printf ("%d\n",a);rn return 0;rnrn[/code]rn这段代码向文件中写入846 这个int 的值,然后把它读出来,我用十六进制编辑器打开rn 这个/tmp/aout文件,发现内容如下:rn00000000: 4e03 0000 N...rn即4e030000表示846这个数rn我的问题是,我现在有一个二进制文件rn它的int 的值似乎不是按照上面的顺序,rn比如它的846这个值是这样的rn0000034e,而不是4e03 0000rnrn用fread(&a ,sizeof(int) ,1, fp)似乎读的不正确.rn请教高手rn rn
C读取二进制文件的问题
生成了二进制文件,如何利用C实现读这个二进制文件,并将其内容print出来,看看和写的信息是否一致。rn使用fread函数吗?望君指点。
c#如何读取二进制文件?
文件内容如下(这个是用旧的vb程序读出来写到一个文本里面的):rn431 rn 2248 rn 10818 rn 74 rn 76 rn 1951 rn 1 rn 32744 rn 32744 rn 32744 rn ……rn ……rn然后我用c#读取:rnFileStream myFS = new FileStream(myFname, FileMode.Open); //myname是二进制文件rnStreamWriter txtTmp = new StreamWriter("test.txt");rnBinaryReader br = new BinaryReader(myFS);rnbyte[] tmp = new byte[myFS.Length];rnbr.Read(tmp, 0, (int)myFS.Length);rntxtTmp.Write(tmp[5]);rnmyFS.Close();rnrn不成功,tmp数组的每个元素都是0,写入的文本文件也是0,怎么回事呢?
C#读取二进制文件
https://msdn.microsoft.com/zh-cn/library/883dhyx0(v=vs.110).aspx
c#读取二进制文件?
例如文件中有二进制存储的若干整数,如何读入?
C# 写文本文件 二进制文件
自己写的类,感觉很实用,希望对开始学习c#的朋友有帮助
读取二进制文件的语句怎么写???
以二进制流的方式读取文件的语句怎么写???谢谢了
Linux C 读取mysql二进制文件
我想通过监听mysql的二进制文件 获取mysql的操作事件 就像主从同步一样rn各位怎么实现呢
java C读取二进制文件方式
参考博客:http://blog.csdn.net/liuyanfeier/article/details/60957171 我在hadoop中存取了10个float数据,分别为0.1 1.1……9.1 看到输出的结果是正确的,然而保存成二进制用C进行读取的时候发现数据很乱,并不是我想要的。由于输出时对的,然而C二进制读取出现问题,怀疑是java和C读取二进制的方式不同。 主要
C# 读取数据库中的二进制文件
将存储在数据库中的二进制文件如,word、excel、txt等读取出来,并保存,
C# 读取二进制文件转换成文本文件
怎么样实现把二进制格式的文件,转换成正常的文本文件,可以直接打开不是乱码的那种文件。
C#如何读取二进制文件(float32)
今天碰到一个问题,手上有一个二进制文件,里面的数据是由一个一个的float32类型数值组成,现在需要在C#中读取这个文件中的所有数据。 首先找到C#中用于读取二进制文件的有BinaryReade这个类,那么关于这个类的描述及其方法参见MSDN: https://msdn.microsoft.com/en-us/library/system.io.binaryreader_methods(v=v
请教C#读取二进制文件问题!
尺度参数 SCALED INT .001 TO 8.000 每距离库的像素数rn径向数 INT*2 1 TO 400 产品的径向总数rn径向的RLE双字节数 INT*2 1 TO 230 每一经向的RLE(RUN LENGTH ENCODED)双字节数rn径向起始角度 SCALED INT 0.0 TO 359.9 收集径向数据的起始角度rn径向角度差 SCALED INT 0.0 TO 2.0 相邻径向角度之差rnRUN(0) 4 BIT INT 0 TO 15 4-BIT 运行代码rnCOLOR CODE(0) 4 BIT INT 0 TO 15 4-BIT 颜色级别代码rn上面是摘录的数据格式,里面的那个SCALED INT,4 BIT INT怎么读取呢?是什么类型的啊?
C#读取二进制文件【float型】
今天需要用C#读取二进制文件,文件里面存储的全是float类型的小数。 由于接口比较隐蔽,所以就记录一下。 FileStream fs; fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Read); BinaryReader br = ne
C#与PHP写二进制文件的区别
问题描述:最近想把一段PHP代码改写成C#,过程中遇上把数据流写入文件,来生成图片的代码。PHP生成的图片没有问题,而C#生成的却是无效图片格式。个人怀疑是如下两个原因之一,望各位老师不吝赐教。rnrn怀疑 1. 下面的代码改写不正确rn /// rn /// 对flash内置的流编码进行解码rn /// rn private string flashdata_decode(string s)rn rn // PHP原始代码 ///////////////////////////////////////////rn //$r = '';rn //$l = strlen($s);rn //for($i=0; $i<$l; $i=$i+2) rn // $k1 = ord($s[$i]) - 48;rn // $k1 -= $k1 > 9 ? 7 : 0;rn // $k2 = ord($s[$i+1]) - 48;rn // $k2 -= $k2 > 9 ? 7 : 0;rn // $r .= chr($k1 << 4 | $k2);rn //rn //return $r;rn // PHP原始代码 ///////////////////////////////////////////rnrn // 改写后的C#代码 //////////////////////////////////////////rn string r = "";rn int k1, k2;rn for (int i = 0; i < s.Length; i = i + 2)rn rn k1 = (char)(s[i]) - 48;rn k1 -= k1 > 9 ? 7 : 0;rn k2 = (char)(s[i + 1]) - 48;rn k2 -= k2 > 9 ? 7 : 0;rn r += Convert.ToChar(k1 << 4 | k2);rn rn return r;rn // 改写后的C#代码 //////////////////////////////////////////rnrn rnrn怀疑 2:PHP与C#写文件的机制不同rnrn//PHP 原始代码:确实能生成“a1.jpg”,并且可以正常浏览rn $bigavatar = $this->flashdata_decode( $_POST['avatar1'] );rn $bigavatarfile = 'D:\test\a1.jpg';rn $fp = @fopen($bigavatarfile, 'wb');rn @fwrite($fp, $bigavatar);rn @fclose($fp);rnrn//C#改写:试了多种方法,也能生成“a1.jpg”,但却都是无效的图片文件rn string bigavatar = flashdata_decode(Request.Form["avatar1"]);rn string bigavatarfile = 'D:\test\a1.jpg';rnrn//方式1(直接写入字符串):rn File.WriteAllText(bigavatarfile, bigavatar);rn//方式2(写byte):rn FileStream fs = new FileStream(bigavatarfile, FileMode.Create);rn Byte[] info = new ASCIIEncoding().GetBytes(bigavatar);rn fs.Write(info, 0, info.Length);rn fs.Flush();rn fs.Close();rnrn本人对PHP是一窍不通,完全是对照着PHP手册,按照自己的理解改写的。有什么低级错误的话,见笑。rn麻烦大家帮忙看看是什么原因,在此谢过。
读取二进制文件
读取二进制文件
二进制文件的读取
如何读取一个二进制文件 rn1.一个指定位置的字节 rn2.查找某几个字节(如30 30 34 00这四个连续的字节)在文件中出现的位置 rn3.读出在某个位置开始指定长度的几个字节 rn
Java读取二进制文件,二进制文件是由C++写生成的
有一个应用,需要解析一个C++生成的文件,我用BufferedRandomAccessFile读取。rn 问题:1、文件中原8字节是C++的double存储的,二进制高地位相反,且我了解的是1位符号位,11位移码,52位尾数,请问有无好的方法在Java中得到该8字节的正确数据; rn 2、里面有4字节的int型的数据,由于C++写入文件是高位在后,低位在前(与java相反),rn 我是通过位移运算解决了;
写二进制文件
我有一个整数数组int data[]=128,129 130,180 224 255;rn怎么写第三成二进制文件rn0x80 0x81 0x82 ... 0xFF啊?rnrn发现问题是大于128的数就变成0x3f(?)了,怎么解决啊?
bcb写的二进制文件,java中如何读取
遇到一个问题,做一个界面设计软件,将界面信息保存在一个文件中,用bcb写的,要将这个界在在安卓手机上显示出来,bcb的程序写好后,在java中读取时数据不正确,在java区问了没人能给合适的答案,请教这里的高手了。我之前从来没接触过java,这是逼着没办法了,都说java简单,可是没有指针的日子,我觉得好难过啊rn[code=c]rn//bcb存文件rnstruct DATArnwchar_t a[100];rn int b;rnwchar_t c[20];rndata;rnrnFileStream *f=new FileStream("....",fmWrite);rn...........rnf.Write(&data,sizeof(DATA));rn[/code]rnjava中读取文件rn[code=java]rnclass Datarnbyte a[]=new byte[200];rn byte b[]=new byte[4];rn byte c[]=new byte[40];rn;rn//以下代码在窗口(activity)的onCreate事件中rnData data=new Data();rnInputStream filestream;rnfilestream=getResources().openRawResource(R.raw.info);rnfilestream.read(data.a);rnfilestream.read(data.b);rnfilestream.read(data.c);rnfilestream.close();rn//以下把byte转换成字符,得到的结果不正确,如果换Data的成员变量a或b数组数减少1,勉强正确,rn//但结束符之后的仍然被显示rnString res = EncodingUtils.getString(data.c, "UNICODE"); rn//以下取出把b转换成int型,结果怎么都得不到正确值rnint k=(((int)data.b[0]) << 24) + (((int)data.b[1]) << 16) + (((int)data.b[2]) << 8) + data.b[3];rn[/code]
如何读取fortran语言写的二进制文件?
谢谢!
C# 如何读取C写的API
1 C# 如何读取C写的API ?rn2 需不需要註冊C寫的dll?rn3 在專案中如何調用 ?rn4 發何把祂封裝成一個元件?
C# 读取二进制文件画灰度图(在线等)
各位大虾,小妹最近用C#写了个小程序,按行列数循环写入一个数组,数组每个值是从0-255,得到了一个二进制文件,现在我想把这个文件在picturebox里面以灰度图(黑白的)的形式显示出来,不知道该怎么做?麻烦麻烦各位不吝赐教,小妹感激不尽~~
C#如何一次性读取指定字节的二进制文件?
比如要读取a.exe文件前1K的内容.rnBinaryReader?我可不想一个一个字节读...rn谢谢!
c#读取二进制文件dbf、shp等
利用c#语言读取shp、dbf二进制文件,实现地图转化
c# 读取二进制文件中结构体的问题
请教,如何利用c#读取一个二进制文件中的结构体啊。rnstruc aaarnrn int age;rn char name[20];rn float money;rn byte sex;rn DWORD level;rn int other[10];rn WORD photo[128*128];rnaaa;rnrn在C++中用如下方法就可读取rn FILE *fp;rn fp = fopen("TESTFILE.DAT", "rb");rn fread(&aaa, sizeof(aaa), 1, fp);rnrn那么怎么在C#中一次读取一个结构体啊,而且可以访问其中每个值,如aaa.level等rnrn
如何在C#中读取二进制文件?
请问如何读取二进制文件,我用filestream读取的是一个byte数组,难道要将字节一个一个地转换为整形或浮点型吗?有没有直接从二进制文件中读取多个整形或浮点型数据的函数?
c# 从二进制文件中读取结构体
各位,请教了,情况是这样的:rn现在需要从一个二进制文件中读取特定的数组,该二进制文件由10个大小为2432Bytes的结构体组成.每个结构体大致如下:rn struct Rountrnrn unsigned short int CTM[6]; rn unsigned short int MessageSize; rn char ChannelID; rn char MessageType; rn short int IDSequence; rn unsigned short int ;rn rn unsigned char dBZ[460];rn unsigned char Vel[920];rn unsigned char SW[920];rnrnrnrn用FileStream的方式一次读取2432Bytes好像只能放到byte数组中,问题就是我怎样才能把读出来的2432Bytes的数据放到结构体中,这样变量就可以对应起来,用Rount.dBZ的方式访问里面的数组,谢谢回复
C#读取二进制文件放到内存中
读取二进制文件,每次读取1024直到读完全部的,放入内存中,返回ref int型的内存地址,因为我的控件接口是ref int。rn下面是我写的,有点乱,本身对C#是个新手。rn FileStream inStream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read);rn long nBytesToRead = inStream.Length;rnrn buffer = new byte[nBytesToRead];rn int m = inStream.Read(buffer, 0, buffer.Length);rn inStream.Close();rn sbty = new Int32 [nBytesToRead / 256];rn //Marshal.Copy(sbty, 0, buffer[0], nBytesToRead);rn Marshal.Copy(sbty, 0, (IntPtr)buffer[0], (int)nBytesToRead); rn axIRISVideoPlay1.IRISVideoMatch(sbty[0], nBytesToRead / 1024);
C# 操作数据库写入、读取二进制文件
[code=C#]protected void Button1_Click(object sender, EventArgs e)rn rn //写入rn string path = this.FileUpload1.PostedFile.FileName;rn FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);rnrn int length = this.FileUpload1.PostedFile.ContentLength;rn byte[] wordData = new byte[length];rn stream.Read(wordData, 0, length);rn stream.Close();rn rn SqlConnection con = new SqlConnection(connectionString);rn con.Open();rn SqlCommand cmd = new SqlCommand("insert into word values('test','" + wordData + "')", con);rn cmd.ExecuteNonQuery();rn con.Close();rnrn rnrn protected void Button2_Click(object sender, EventArgs e)rn rn //读取rn SqlConnection con = new SqlConnection(connectionString);rn con.Open();rn SqlCommand cmd = new SqlCommand("select content from word where id=9", con);rn SqlDataReader sdr = cmd.ExecuteReader();rnrn FileStream fs;rn BinaryWriter bw;rnrn byte[] outbyte = null;rnrn string filePath = @"D:\word.doc";rnrn while (sdr.Read())rn rn fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);rn bw = new BinaryWriter(fs);rnrn outbyte=(byte[])sdr["content"];rn bw.Write(outbyte, 0, outbyte.Length);rn rn bw.Flush();rn bw.Close();rn fs.Close();rn rn sdr.Close();rn con.Close();rn [/code]rnrn我用来将WORD文档写入数据库,再读取到指定目录下。rn但是无法读取出来,程序运行后,打开文档,内容只有“System.Byte[]”。rn在线等,我要疯了……
求助C# 读取高字节序二进制文件问题
我要读一个二进制文件,比如原二进制为 rn00 00 27 0Arn我用 rnFileStream RFile = new FileStream(fileName, FileMode.Open, FileAccess.Read); rn rnBinaryReader BRead = new BinaryReader(RFile);rnrnint xxx=BRead.ReadInt32();rnrn是按照低字节序读出来的xxx=170328064 rnrn170328064 为 0x0A270000rnrn我想要的是0x0000270A,按照高字节序要怎么读呢?rnrn
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview