当前位置:编程学习 > C#/ASP.NET >>

C#读取二进制文件

嘿嘿本人巨菜,我想用二进制的方式读取一个文件,如图,65~68字节,然后再倒过来组装一下12234929最后再转成十进制304302377

谢谢,初学C#数据类型转换头都大了,还是弄不出来!_!

补充:嘿嘿研究出来了

System.IO.FileInfo f = new FileInfo(qqpath+"LoginUinList.dat");
int flen=(Int32)f.Length;
byte[] byData = new byte[flen];
Int32[] asQQID = new Int32[flen];

FileStream sFile = new FileStream(qqpath + "LoginUinList.dat", FileMode.Open);
sFile.Read(byData, 0, flen);

string alldata;

int fpos=0;
int i =0;

while (fpos<flen -40)
{
if (Convert.ToString((long)byData[fpos], 16) == "51")
{
if (Convert.ToString((long)byData[fpos + 1], 16) == "44")
{
alldata = "";

alldata = alldata + Convert.ToString((long)byData[fpos + 54], 16);
alldata = alldata + Convert.ToString((long)byData[fpos + 53], 16);
alldata = alldata + Convert.ToString((long)byData[fpos + 52], 16);
alldata = alldata + Convert.ToString((long)byData[fpos + 51], 16);

asQQID[i] = Convert.ToInt32(alldata, 16);
i++;
fpos += 54;
}
else
{
fpos++;
}
}
else
{
fpos++;
}
}

方法肯定有点笨,逐字节逐字节的去比较,用来解析2008版QQ登陆号码用的

追问:我是要用C#去读取本机的文件比如“test.txt”截图是我用Notepad++编辑器看到的

答案:/* 

给你一个读取一个 int 类型的列子

要控制流的位置请设置 Position,例子以文件的前四位是整型为列。

*/


using System.IO;

using (FileStream stream = new FileStream("文件路径", FileMode.Open))
{
byte[] array = new byte[4]; // int 类型长度是 4
stream.Read(array, 0, 4); // 正常情况下 Read 的返回值应该是 4
int value = BitConverter.ToInt32(array, 0); // BitConverter 已经包含常用的转换方法
}

直接读取难度很大 C#的二进制文件很有可能是被序列化进去的 如果你不知道被序列的对象名的话 那基本上就得你自己读二进制 读懂以后找到对象名 再反序列化回来  完了再按照你的业务逻辑重新排序

上一个:C#程序语言解释
下一个:C#做一个计算器

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,