zoukankan      html  css  js  c++  java
  • 我写的HEX转BIN的源码

     1 #include "stdio.h"
     2 #include "string.h"
     3 
     4 unsigned char ChartoByte(char c)
     5 {
     6     if(c-'a'>=0 ) return(c-'a'+10);
     7     else if(c-'A'>=0 ) return(c-'A'+10);
     8     else return(c-'0');
     9 }
    10 
    11 unsigned char Char2toByte(char* s)
    12 {
    13     return (ChartoByte(*s)*16+ChartoByte(*(s+1)));
    14 }
    15 
    16 
    17 int main(int argc,char *argv[])
    18 {
    19     FILE *fp_hex = NULL;
    20     FILE *fp_bin = NULL;
    21     char buff[64] = "" ;
    22 
    23     unsigned char length = 0;
    24     unsigned short offset = 0;  //0~65535
    25     unsigned char type = 0;
    26     unsigned char checksum = 0;
    27     unsigned char i = 0;
    28 
    29     if(argc != 2) return -1;
    30 
    31     printf("Input file: %s\n",argv[1]);
    32 
    33     if((fp_hex=fopen(argv[1],"r"))==NULL)
    34     {
    35         printf("File open error!!!\n");
    36         return -1;
    37     }
    38 
    39     i=strlen(argv[1]);
    40     argv[1][i-1]='n';
    41     argv[1][i-2]='i';
    42     argv[1][i-3]='b';
    43     printf("Output file: %s\n",argv[1]);
    44 
    45     if((fp_bin=fopen(argv[1],"wb"))==NULL)
    46     {
    47         printf("File creat error!!!\n");
    48         return -1;
    49     }
    50 
    51     while(1)
    52     {
    53         fgets(buff,64,fp_hex);
    54 
    55         if(feof(fp_hex)) break; //文件结束
    56         else if(buff[0] != ':') continue; //无效行
    57         else if( strcmp(buff,":00000001FF\n") == 0  ) break; //结束行
    58         else
    59         {
    60             length=Char2toByte(&buff[1]);
    61             offset=Char2toByte(&buff[3])*256+Char2toByte(&buff[5]);
    62             type=Char2toByte(&buff[7]);
    63             if(type==0)
    64             {
    65                 fseek(fp_bin,offset,0);
    66                 for(i=0; i<length; i++)
    67                     fputc(Char2toByte(&buff[9+2*i]), fp_bin);
    68             }
    69 
    70             printf("%s",buff);
    71         }
    72     }
    73 
    74 
    75 
    76     return(0);
    77 }
  • 相关阅读:
    斯坦福机器学习实现与分析之二(线性回归)
    理解Kalman滤波的使用
    浅谈程序优化
    2014年,我学到了什么
    运动目标跟踪中kalman滤波器的使用
    图像水波纹特效原理分析和实现
    Redis与memached的区别
    Freemarker讲解
    Java基础知识总结
    Java中GC的工作原理
  • 原文地址:https://www.cnblogs.com/sky1991/p/2630421.html
Copyright © 2011-2022 走看看