bin2cHex
1694 ワード
#include
#include
#include
#include
#define BYTES_PER_LINE 0x10
void main(void)
{
wchar_t binfilename[]=TEXT("d:\\x86.sys");
char cfilename[]="d:\\1234.h";
char* buffer=NULL;
FILE *fp = NULL;
int numread = 0;
HANDLE hFile;
DWORD NumberOfBytesRead=0;
hFile=CreateFile(binfilename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL ,NULL);
if ( INVALID_HANDLE_VALUE==hFile)
{
printf("
");
getchar();
return;
}
numread=GetFileSize(hFile,NULL);
buffer=new char[numread];
ZeroMemory(buffer,numread);
ReadFile(hFile,buffer,numread,&NumberOfBytesRead,NULL);
CloseHandle(hFile);
if (NumberOfBytesRead!=numread)
{
printf("
");
getchar();
return;
}
if ((fp = fopen(cfilename,"wt")) != NULL)
{
static char temp[MAX_PATH] ={0};
static char temp2[MAX_PATH] ={0};
unsigned char *ptr =(unsigned char *) buffer;
fprintf(fp, "unsigned char firmware[] = {
");
for (int i = 0; i < ((numread + BYTES_PER_LINE - 1) / BYTES_PER_LINE); i++)//for not enogh line
{
for (int j = 0; j < BYTES_PER_LINE; j++)
{
if (((i * BYTES_PER_LINE) + j) < (numread-1))
{
sprintf(temp2,"0x%02X, ",*ptr++);
strcat(temp,temp2);
}
else if (((i * BYTES_PER_LINE) + j) < (numread))
{
sprintf(temp2,"0x%02X ",*ptr++);
strcat(temp,temp2);
}
}
fprintf(fp, "%s
",temp);
ZeroMemory(temp,MAX_PATH);
}
fprintf(fp, "};
");
fclose(fp);
}
getchar();
getchar();
return ;
}