0x* 16进制代码转换为ASCII码 程序有关问题(有关问题解决者另结50分)

0x** 16进制代码转换为ASCII码 程序问题(问题解决者另结50分)
被转换代码太长了,发不上来..http://download.csdn.net/source/223323

示例:
        0x55,   0x8B,   0xEC,   0x81,   0xC4,   0x3C,   0xF2,   0xFF,   0xFF,   0x60,   0x33,   0xC0,   0x8D,   0xBD,   0x90,   0xF2,  
        0xFF,   0xFF,   0xB9,   0x5B,   0x0D,   0x00,   0x00,   0xF3,   0xAA,   0x33,   0xC0,   0x8D,   0xBD,   0x4C,   0xF2,   0xFF,  
        0xFF,   0xB9,   0x44,   0x00,   0x00,   0x00,   0xF3,   0xAA,   0xC7,   0x85,   0xB9,   0xF3,   0xFF,   0xFF,   0xE6,   0x00

这是转换代码:
#include <stdio.h>
#include   <malloc.h>
#include <io.h>
#include <stdlib.h>

main(){
int   i=0,j=0;
FILE   *fa,*fb;
int   a,b,c,d;
char   e,f,g,h;
if((fa=fopen( "a.txt ", "rb "))==NULL)
{
printf( "文件出错 ");
system( "pause ");
exit(1);
}
if((fb=fopen( "b.txt ", "ab+ "))==NULL)
{
printf( "文件出错 ");
system( "pause ");
exit(1);
}
for(j=0;j <407;j++){ //读前407行  
fseek(fa,6,1);
for(i=0;i <16;i++){
fscanf(fa, "%c ",&e);
fscanf(fa, "%c ",&f);

if(48 <=e <=57)   a=e-48;
else   if   (65 <=e <=70)   a=   e-65+10;
else   printf( "error\n ");

if(48 <=f <=57)   b=f-48;
else   if(65 <=e <=70)   b=   f-65+10;
else   printf( "error\n ");

b=a*16+b;
e=(char)b;
fprintf(fb, "%c ",e);
fseek(fa,4,1);
}
}
fseek(fa,6,1);
for(i=0;i <7;i++){
fscanf(fa, "%c ",&e);
fscanf(fa, "%c ",&f);

if(48 <=e <=57)   a=e-48;
else   if   (65 <=e <=70)   a=   e-65+10;
else   printf( "error\n ");

if(48 <=f <=57)   b=f-48;
else   if(65 <=e <=70)   b=   f-65+10;
else   printf( "error\n ");

b=a*16+b;
e=(char)b;
fprintf(fb, "%c ",e);
fseek(fa,4,1);
}

fclose(fa);
fclose(fb);
}


转换后用16进制查看器看的话和原来的不一样...帮忙看看代码..谢谢

------解决方案--------------------
if(48 <=f <=57)

这个没有这样表达的

改为if(f > = 48 && f <= 57)