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进制查看器看的话和原来的不一样...帮忙看看代码..谢谢