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
#include
#include
#include
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)