新手求助,bin文件转换为数组文件输出

qq_32388655 2017-11-21 08:14:44

如图怎样把bin文件转换成数组头文件,比如DF 03 01转换成{0x3DF,0x01},求大神帮助!!!
...全文
466 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-11-22
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
#include <conio.h>
FILE *fi,*fo;
unsigned int n;
int c;
//-------------------------------------------------------
void main(int argc,char *argv[])
{
    if (argc<3) {
        cprintf("Bin2Hex srcfile desfile");
        return;
    }
    if ((fi=fopen(argv[1],"rb"))==NULL) {
        cprintf("Can not find file %s",argv[1]);
        return;
    }
    if ((fo=fopen(argv[2],"w"))==NULL) {
        fclose(fi);
        cprintf("Can not create file %s",argv[2]);
        return;
    }
    n=0;
    while (1) {
        c=fgetc(fi);
        if (EOF==c) break;
        n++;
        if (1==n)        fprintf(fo,  "0x%02X",c);
        else {
            if (1==n%16) fprintf(fo,"\n0x%02X",c);
            else         fprintf(fo, ",0x%02X",c);
        }
    }
    fcloseall();
    cprintf("OK to Bin2Hex %u bytes.",n);
}
老马何以识途 2017-11-22
  • 打赏
  • 举报
回复
不好意思,可能需要纠正一下,读二进制用fread,即以下这行:

		fscanf(fp, "%c%c%c", &temp_data[0], &temp_data[1], &temp_data[2]);
替换为:

		fread(&temp_data, 3, 1, fp);
老马何以识途 2017-11-22
  • 打赏
  • 举报
回复
只是按思路写了出来,没有测试,仅供参考。你自己调试和完善吧。

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

typedef struct _data_array
{
	int a;
	char b;
} DATA_ARRAY;

int main(int argc, char **argv)
{
	DATA_ARRAY arrays[1024];
	FILE *fp = NULL;
	char temp_data[3] = { 0 };
	int i = 0;
	
	fp = fopen("your path", "b");
	if (fp == NULL)
		return -1;
	
	for (i = 0; i < 1024 && !feof(fp); i ++)
	{
		fscanf(fp, "%c%c%c", &temp_data[0], &temp_data[1], &temp_data[2]);
		arrays[i].a = temp_data[1] << 8 + temp_data[0];
		arrays[i].b = temp_data[2];
	}
	
	return 0;
}
qq_32388655 2017-11-21
  • 打赏
  • 举报
回复
有没有大神给些代码啊,要不小弟要被被人叼了
qq_32388655 2017-11-21
  • 打赏
  • 举报
回复
#include <stdio.h> #include <fcntl.h> #include <malloc.h> #include <io.h> #include <errno.h> #include<string.h> #include<sys/types.h> #include<unistd.h> #include<stdlib.h> #include <fcntl.h> #include <malloc.h> #include <io.h> #include <errno.h> #define DEST_FILE "1.h" #define SRC_FILE "1.bin" 1 int main(void) { FILE* fpSrc; Int32 fpSrcTmp,fpDest; Int32 fpDestStm; char *array = "static const S_Config_first[] = \n{"; if(!(access(DEST_FILE,0)<0)) { system("1.h -R"); remove("1.h"); } if((fpSrcTmp = open(SRC_FILE, O_RDONLY | O_BINARY)) == -1) { puts("1.bin 不存在,按任意键退出"); getch(); return 0; } close(fpSrcTmp); fpDest = open("1.h", O_RDWR|O_BINARY|O_CREAT); if(fpDest==-1) { printf("errno=%d\n",errno); puts("创建文件失败1.h,请重新尝试,按任意键退出!"); getch(); return 0; } fpSrc = fopen(SRC_FILE,"r"); while(!feof(fpSrc)) { } 我写到这里就不会写了
paschen 2017-11-21
  • 打赏
  • 举报
回复
自己先写个小程序去读这个bin文件,然后按你要的格式输出成文本,然后再复制到你的数组那里
qq_32388655 2017-11-21
  • 打赏
  • 举报
回复
引用 1 楼 hzy_76 的回复:
按二进制打开文件,然后按一个双字节整数一个char型的方式循环读取至文件结束。
可以给些代码吗,我比新手还菜啊
老马何以识途 2017-11-21
  • 打赏
  • 举报
回复
按二进制打开文件,然后按一个双字节整数一个char型的方式循环读取至文件结束。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧