• 我写的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 }
  • 相关阅读:
    附加数据库 对于 服务器“00-PC”失败
    SQL 语句转换格式函数Cast、Convert
    sql语句:union
    ISNULL-sqlserver语句
    SQL中的CASE WHEN语句
    SQL SELECT INTO 语句
    Sql语句中IN等方面的用法
    combobox的不常用的方法和将txt文本内容加到textbox中显示
    程序员:“菜鸟”和“大神”差距在哪
    过劳死离我们有多远?
  • 原文地址:https://www.cnblogs.com/sky1991/p/2630421.html
Copyright © 2020-2023  润新知