【Linux开发进阶】00000000H_Linux开发环境中读取.bin文件


1. 需求


因为要做车载终端升级ECU的功能,需要通过平台向车载终端下发ECU的烧录文件(.bin),所以,需要在终端的某路径下读取已将下载好的文件,此时需要读取.bin文件。
根据定义好的协议,读取刷写信息,实现刷写升级功能。

2. 实现


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    FILE *file;
    unsigned char *buffer;
    unsigned long fileLen;
    int i;
    
    file = fopen("aa.bin", "rb");

    if (!file)
    {
       fprintf(stderr, "can't open file %s", "1.m4v");
       exit(1);
    }
    
    //表示从文件的0查到文件末尾
    fseek(file, 0, SEEK_END);
    //返回给定的流的当前位置
    fileLen = ftell(file);

    fseek(file, 0, SEEK_SET);

    printf("fileLen == %ld\n",fileLen);
    //开辟长度大小
    buffer = (char *)malloc(fileLen + 1);

    if (!buffer)
    {
        fprintf(stderr, "Memory error!");
        fclose(file);
        exit(1);
    }
    //读取文件内容放入buffer中
    fread(buffer, 1, fileLen+1, file);
    //关闭文件读取
    fclose(file);
    
    for(i = 0; i < fileLen; i++)
    {
      if(buffer[i] < 0x10)
      { 
         printf("0%-2hX ", buffer[i]);
      }
      else
      printf("%-2hX  ", buffer[i]);
        
      if(i%16 == 15)printf("\n");
   }
   
   printf("\n");
   free(buffer);

   return 0;
}

3. 验证结果:

在终端打印的文件内容:
在这里插入图片描述

通过UltraEdit软件直接打开aa.bin文件:
在这里插入图片描述

可以看到,文件读取正确无误!


参考资料
【1】 CSDN上的大神的文章linux c 读取.bin文件

猜你喜欢

转载自blog.csdn.net/Allen_Spring/article/details/107842328
今日推荐