虽然网络上关于“C#对二进制文件进行读写”的文章多如牛毛,但具体到自己要处理的问题时,难免让人产生“书到用时方恨少”和“纸上读来终觉浅”的感觉。我现在感觉要真正解决自己的问题,最终还是要靠自己下功夫。

实例一:将数值写入文件的特定位置

    String saveFile = "C:\\Users\\ufo\\Desktop\\rich4\\SAVE2.DAT";// 要保存的文件
    FileStream writeStream = File.OpenWrite(saveFile);// 以写的方式打开

    ;// 要写入的数值
    String strAll = value.ToString("x8");// 转成16进制
    // 下面是特定处理,个性化需求,不完善勿怪
    String strA = strAll.Substring(strAll.Length - , );
    String strB = strAll.Substring(strAll.Length - , );
    String strC = strAll.Substring(strAll.Length - , );

    ];
    newData[] = Convert.ToByte(strA, );
    newData[] = Convert.ToByte(strB, );
    newData[] = Convert.ToByte(strC, );

    writeStream.Seek(, SeekOrigin.Begin);// 定位,在第44个字节处写入
    writeStream.Write(newData, , newData.Length);// 将准备好的数组写入文件。newData是包含要写入文件的byte类型数组;0是数组中的从零开始的字节偏移量,从此处开始将字节复制到该流;newData.Length是要写入的字节数。这句话的意思是从44个字节开始把数组内容从头到尾写进去,修改下参数如writeStream.Write(newData, 1, newData.Length-1)是把数组从第二个到倒数第一个写进去
    writeStream.Close();// 关闭文件

实例二:读取文件的特定位置,得到数值

    String openFile = "C:\\Users\\ufo\\Desktop\\rich4\\SAVE2.DAT";// 要读取的文件
    FileStream fs = new FileStream(openFile, FileMode.Open);// 读取方式打开,得到流
    fs.Seek(, SeekOrigin.Begin);// 定位到第44个字节

    ];// 要读取的内容会放到这个数组里
    fs.Read(datas, , datas.Length);// 开始读取,读取的内容放到datas数组里,0是从第一个开始放,datas.length是最多允许放多少个
  // 下面是个性化处理,不完善勿怪
    ];
    String strA = Convert.ToString(a, );
    if (strA.Equals(""))
    {
        strA = ";
    }
    )
    {
        strA = " + strA;
    }

    a = datas[];
    String strB = Convert.ToString(a, );
    if (strB.Equals(""))
    {
        strB = ";
    }
    )
    {
        strB = " + strB;
    }

    a = datas[];
    String strC = Convert.ToString(a, );
    if (strC.Equals(""))
    {
        strC = ";
    }
    )
    {
        strC = " + strC;
    }

    String strD = strA + strB + strC;

    );// 十六进制转十进制
    System.Console.WriteLine("value=" + point);// 这里输出value=123456,也就是上面写入程序写进去的值

2017年6月13日11:43:46

C#对二进制文件的特定位置进行读写小结的更多相关文章

  1. 使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容)

    使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供 ...

  2. .NET Core中向已存在文件的特定位置写入数据

    本例使用.NET Core向一个文本文件中的特定位置写入数据,来模拟文件上传中的断点续传是如何在服务器端实现的. 新建一个.NET Core控制台项目FileContinueToWrite,其Prog ...

  3. 【HTML】网页中如何让DIV在网页滚动到特定位置时出现

    用js或者jquery比较好实现.但你要知道,滚动到哪个特定位置,例如滚动到一个标题h3那显示这个div,那么可以用jquery算这个h3距离网页顶部的距离:$("h3").off ...

  4. 【转载】C#通过InsertAt方法在DataTable特定位置插入一条数据

    在C#中的Datatable数据变量的操作过程中,可以通过DataTable变量的Rows属性的InsertAt方法往DataTable的指定位置行数位置插入一个新行数据,即往DataTable表格指 ...

  5. H5小技巧之——巧用<a>标签锚链接(#锚点链接 #页面特定位置 #DOM定位 #hash路由中使用锚链接)

    #作者:矩阵鱼--代码中游泳的咸鱼 前端开发中,常遇到定位到页面某特定位置的需求,JavaScript提供的el.scrollIntoView() 和 el.scrollIntoViewIfNeede ...

  6. iOS的高德地图标注特定位置

    在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存 这时只要调用自动高德地图的就行了 自己写一个控制器,导入框架 现在导入系统框架只要多打次就能出来了, ...

  7. C++读取二进制文件(某特定格式)

    该格式也不复杂,就是一个二进制文件,格式为:8个通道,每个通道2字节,都为整数,最后两个通道都是0x03FF == 1023d,文件中中若干个8通道. 有个小细节就是:下面代码中 infile.rea ...

  8. sed 技巧一例:特定位置插入

    通过一例子熟悉 sed 的运用 下面命令是在修改 ~/fs/install/nzos.conf 文件, 并在 env 第一次出现的地方再添加一行 env LXC_EXTRA_PORT=5556 sed ...

  9. iOS UITableView获取特定位置的cell

    代码地址如下:http://www.demodashi.com/demo/13307.html 一.tableView双级联动 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tab ...

随机推荐

  1. css实现盒尺寸重置、均匀分布的子元素、截断文本

    盒尺寸重置 重置盒子模型,以便width s和height s并没有受到border 还是padding他们的影响 . CSS文字折断 css实现盒尺寸重置.均匀分布的子元素.截断文本 如何对多行文本 ...

  2. 【git】不检查特定文件的更改情况

    .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的.正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更 ...

  3. mysql 慢查询日志 mysqldumpslow 工具

    文章来源:https://www.cnblogs.com/hello-tl/p/9229676.html 1.使用Mysql慢查询日志配置 查看慢查询日志是否开启 OFF关闭 ON开启 show va ...

  4. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)

    摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{     }}    变量相关{% %}    ...

  5. Day10文件内指针移动和函数

    强调:只有t模式下的read(n),n代表字符个数,除此以外都是以字节为单位 ,例如f.read(4)读出4个字符 控制文件内指针的移动:f.seek()以字节为单位 f.tell()文件开头为准,当 ...

  6. Tinkoff Challenge - Elimination Round 开始补题

    A. Oleg and shares time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  7. 九度oj 题目1096:日期差值

    题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...

  8. HDU——3786找出直系亲属(DFS+回溯)

    找出直系亲属 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  9. HDU 4819 Mosaic 【二维线段树】

    题目大意:给你一个n*n的矩阵,每次找到一个点(x,y)周围l*l的子矩阵中的最大值a和最小值b,将(x,y)更新为(a+b)/2 思路:裸的二维线段树 #include<iostream> ...

  10. Java面试通关要点

    Java面试通关要点 2018-03-23 梁桂钊 占小狼的博客 占小狼的博客 占小狼的博客 微信号 whywhy_zj 功能介绍 Java进阶技术干货.实践分享,跟着狼哥一起学习JVM.性能调优,欢 ...