二进制文件读写附加信息

1.前述:
 1)因为是要对二进制文件进行读写操作,所以比如在文件打开的时候以 'b'方式(二进制方式)打开。
 2)用这种方式,可以在多个进程在通过该二进制文件读取内容,比如从一PC保存内容后该二进制文件转移到另一PC下使用时可以获取该内容。

2.例子:追加写入读取二进制文件内容
 
 1)声明
 struct TestStruct
 {
  char *szText;
  int nLength;
  .......       
 }

 2)写入
  
 TestStruct aTest;
 memset(&aTest, 0, sizeof(TestStruct));
 
 {初始化aTest......}
  
 //以二进制方式打开文件,并这
 FILE *fStream = fopen(szFileName, 'ab');
 
 //获取结构内容的长度 
 int nWriteLength = sizeof(TestStruct);      
 
 //写入内容,一个该内容的需要nWriteLength长度的空间
 fwrite(aTest, nWriteLength, 1, fStream);
 
 //记录内容的长度进文件,用来在读取时获取内容
 fwrite(&nWriteLength, sizeof(int), 1, fStream);
 
 fclose(fStream);

 fStream = NULL;

 3)读取

 TestStruct aTest;
 memset(&aTest, 0, sizeof(TestStruct));
 
 //开打文件
 FILE *fStream = fopen(szFileName, 'rb');
 
 //记录需要读出的二进制内容长度
 int nConfigLen = 0;
 
 //跳转到文件的最后一个内容(刚才写入的时候是以 sizeof(int) 容量写入了一个 int)
     fseek(fStream, 0-sizeof(int), SEEK_END);
 
 //从文件末尾读取一个int(需要获取的信息内容长度)
     fread(&nConfigLen, sizeof(int), 1, fStream);

     // 申请内存
     char *buf = new char[nConfigLen+1];
     memset(buf, 0, nConfigLen+1);

     // 移动文件指针至需要读取的信息的起始处
     fseek(fStream, 0-sizeof(int)-nConfigLen, SEEK_END);

     // 读取信息
     fread(buf, 1, nConfigLen, fStream);

     fclose(fStream);

 fStream = NULL;
 
 //将获取出来的二进制内容拷贝给我们需要的结构
 memcpy(aTest, buf, szieof(TestStruct));
 
 //不要忘记删除分配的堆空间
 delete [] buf;

3.例子的流程详解
 1)例子对二进制文件的操作结构图
 

//................................................................//(->原文件的结束)[XXXXXXXX]((1)我们加入的内容)[int]((2)加入内容的长度){文件的结束}


  (1)下的内容都是追加的二进制信息。
  (2)是追加内容的长度,用来确定读取的内容到底多少合适。 
 
 2)写入的流程:
  (1)写入内容,该内容单位一个所占的空间大小。
  (2)保存所写入的内容内所占的空间长度。

 3)读取的流程:
  (1)指针定位到最后一个内容。(该内容为写入的内容内所占的空间长度的信息)[0-sizeof(int):因为是从后向前偏移,所以用负值]
  (2)先读出最好一个保存写入的内容内所占的空间长度的信息。
  (3)根据长度信息定位到内容起始位置。
  (4)读取内容,保存在足够的 char[] buf 空间中。
  (5)用memcpy 方式将 buf 的内容拷贝给需要的参数即可。
   
 4)这种传值方法是一种通用内容传递方法,不管是从文件到文件的内容读写,还是socket, NamePipe 等,都可以用来传递非标准类型内容。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要打开一个bin文件,首先需要找到这个文件的路径。可以使用文件管理器或命令行来定位到这个文件的位置。 一旦找到了bin文件,可以使用各种不同的方式打开它。下面是几种常见的方法: 1. 文本编辑器:如果bin文件是一个文本文件,可以使用文本编辑器(如记事本或Sublime Text)打开。虽然bin文件通常是二进制文件,但某些情况下也可以以文本形式打开。这种方式适用于查看文件的内容,但不能对其进行任何修改。 2. 二进制文件编辑器:如果bin文件是一个二进制文件(如可执行文件或图像文件),可以使用专门的二进制文件编辑器(如Hex Fiend或HxD)打开。这些编辑器可以以十六进制或ASCII码的形式显示文件内容,并允许对其中的数据进行修改。 3. 虚拟机:有些bin文件可能是虚拟机的映像文件。如果想运行这样的文件,可以使用相应的虚拟机软件(如VirtualBox或VMware)打开。虚拟机可以模拟一个完整的计算机系统,从而使bin文件在其中运行。 4. 解压软件:有些bin文件可能压缩了一些文件文件夹。如果需要查看或提取这些压缩文件,可以使用解压软件(如WinRAR或7-Zip)打开。这些软件可以将bin文件解压缩到指定的位置,并显示其中的内容。 需要注意的是,对于要执行bin文件的操作,需要确保文件的来源可信,并意识到执行bin文件可能会对计算机系统造成潜在的风险。 ### 回答2: 打开bin文件是指将二进制文件以适当的方式解析,使得文件内容能够被计算机系统读取和理解。bin文件二进制文件,其中的数据保存为二进制形式,通常包含着特定的文件格式和结构。 要打开bin文件,可以使用计算机系统提供的特定软件或编程语言。下面是通过编程语言实现打开bin文件的步骤: 1. 导入必要的库或模块,例如Python语言可以使用`open`函数以及`struct`库。为了进一步操作bin文件的内容,可能需要其他附加库或模块。 2. 使用`open`函数打开bin文件,指定文件名和打开模式。常见的打开模式包括只读模式('rb')和读写模式('rb+')。 3. 通过读取文件内容,可以按照特定的文件格式和结构解析二进制数据。这可以包括使用`struct`库中的`unpack`函数来解码二进制数据。 4. 解析文件内容后,可以对数据进行相应的处理和操作,例如进行计算、存储到其他文件中等。 5. 关闭已打开的bin文件,以便释放系统资源和确保文件完整性。 打开bin文件需要根据具体的需求选择合适的方法和技术。无论是通过编程语言还是特定软件,都需要理解bin文件文件格式和结构,以便正确读取和解析其中的数据。 ### 回答3: 打开bin文件需要使用相应的软件或工具。bin文件是一种二进制文件,通常包含了机器可执行的程序或者数据。在Windows操作系统中,可以使用记事本打开bin文件,但是其中的内容可能是乱码,无法阅读或理解。如果需要查看或编辑bin文件的内容,建议使用适当的开发工具或文本编辑器,如Visual Studio Code、Xcode等。 如果想要执行bin文件中包含的程序,可以在命令行中使用相应的命令。例如,在Windows操作系统中,可以使用命令提示符(cmd)或PowerShell来执行bin文件。首先,在命令行中进入bin文件所在的目录,然后输入bin文件的名称,按下回车键即可运行该程序。但是需要注意的是,执行bin文件可能需要满足一定的环境要求,如安装相应的依赖库或运行时环境。 总之,要打开bin文件,需要使用适当的工具进行查看或编辑,或者在命令行中执行其中的程序。根据具体的需求和平台,可能需要选择不同的软件或命令来进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值