⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bintob.c

📁 基于dragon_MX1_ads的装载启动代码armboot
💻 C
字号:
/* 
   File: bintob.c

*/

#include <stdio.h>
#include "stddefs.h"

void U32ToASCII(U32 value, char *ASCII)
{
  U8 i;
  U8 tmp;

  for(i=0; i<8; i++)
  {
    tmp=((U8)(value>>(4*i)))&0x0F;
    if(tmp<10)
      tmp+=48;
    else
      tmp+=55;
    *(ASCII+7-i)=tmp; 
  }
}

void U8ToASCII(U8 Byte, char *ASCII)
{
  U8 tmp;

  tmp = (Byte>>4)&0x0F;
  if(tmp<10)
    tmp+=48;
  else
    tmp+=55;  
  *ASCII = tmp; 
  
  tmp = (Byte)&0x0F;
  if(tmp<10)
    tmp+=48;
  else
    tmp+=55;    
  *(ASCII+1)=tmp;
}

int BinaryToB(FILE *InFile, FILE *OutFile, U32 StartAddress)
{ 
  int i, j=0;
  char String[500];
  U8 tmp;
  int ByteCount=0;

  while(!feof(InFile))
  {
    U32ToASCII(StartAddress+((j++)*16), String);
    for(i=0; i<16; i++)
    {
      tmp=(U8)fgetc(InFile);
	  if(!feof(InFile))
        U8ToASCII(tmp, String+i*2+10);
      else
        break;
	  ByteCount++;
    }
    U8ToASCII((U8)i, String+8);
    
    *(String+i*2+10)='\0';
    
	if(i>0)
      fprintf(OutFile, "%s\r\n", String); 
  }

  return ByteCount;
}

U32 ASCIIHEXToU32(char *String)
{ 
  U8 i=0;
  U32 Data=0;

  while(*(String+i)!='\0')
  {
	  Data = Data<<4;
      if( (*(String+i))>47 && (*(String+i))<58 )
	    Data += ((*(String+i))-48);
	  if( (*(String+i))>64 && (*(String+i))<91 )
	    Data += ((*(String+i))-65+10);
      if( (*(String+i))>96 && (*(String+i))<123 )
		Data += ((*(String+i))-97+10);
	  i++;
  }

  return Data;
}

int main(int argc, char *argv[])
{
  FILE *InFile, *OutFile;

  if(argc==4)
  {
    InFile=fopen(argv[1], "rb");
    OutFile=fopen(argv[2], "wb");

    printf("Starting Address=0x%x\n",ASCIIHEXToU32(argv[3]));

    printf("Number of Byte=%d\n", BinaryToB(InFile, OutFile, ASCIIHEXToU32(argv[3])) );

    fclose(InFile);
    fclose(OutFile);
  }
  else {
     printf("BinToB Version 1.0 by Teddy Wong\n");
	  printf("Usage: %s [InFileName] [OutFileName] [HexStartingAddress]\n", argv[0]);
  }

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -