虽然网络上关于“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. Linux三剑客之sed详解(1)

    sed (stream editor 流编辑器简写 ) ,用于过滤和转换文本 synopsis sed [option] ... {script-only-if-no-other-script} [i ...

  2. Experiments done

    喷重金属 换重金属溶液 荧光光合 备注 ASD 备注 高光谱 备注 泡EDTA 备注 电镜 备注 2018.12.19(day1) 2018.12.19(day1) 2018.12.18晚(day0) ...

  3. idea导入jdk源码查看(xjl456852原创)

    idea添加了jdk环境后,却无法查看jdk源码,只能通过idea自带的反编译查看,看起来有些不爽. 下面来说一下如何设置,导入jdk源码,查看时通过源码查看jdk. 1.点击菜单 File -> ...

  4. 交换机VLAN的定义、意义以及划分方式

    什么是VLAN 虚拟网技术(VLAN,Virtual Local Area Network)的诞生主要源于广播.广播在网络中起着非常重要的作用,如发现新设备.调整网络路径.IP地址租赁等等,许多网络协 ...

  5. Dell Idrac Normal Settings

    racadm安装请查看:http://www.cnblogs.com/zyd112/p/7611022.html racadm语法(远程执行命令):racadm -r <racIpAddr> ...

  6. [automator学习篇]android 接口-- bluetooth

    http://www.android-doc.com/guide/topics/connectivity/bluetooth.html 本地下载的sdk 目录:     D:\AndroidSdk\s ...

  7. IntelliJ IDEA 代码提示快捷键

    1.写代码时用Alt-Insert(Code|Generate…)可以创建类里面任何字段的getter与setter方法. mac版 是ctrl+enter 2.CodeCompletion(代码完成 ...

  8. MAC生成公钥私钥

    前言 需要开发者在本地上使用openssl来生成私钥和公钥 由于mac 自带openssl工具,所以不用像windows那样要下载安装openssl工具 步骤 1.创建一个文件夹,终端进入该文件夹 c ...

  9. 算法复习——cdq分治

    题目: Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要 ...

  10. 常州模拟赛d3t1 神在夏至祭降下了神谕

    题目描述 我们村子在过去的400年中,断绝与下界的接触,过着自给自足的生活. 夏至祭是一场迎接祖灵于夏季归来,同时祈求丰收的庆典. 村里的男人会在广场上演出夏之军和冬之军的战争.夏之军会打倒冬之军的大 ...