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

justicesun 2007-08-06 10:55:46
被转换代码太长了,发不上来..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进制查看器看的话和原来的不一样...帮忙看看代码..谢谢
...全文
844 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmily0917 2007-09-06
  • 打赏
  • 举报
回复
//----------------------------------------------------------------------
// ASCII码转换16进制码
//----------------------------------------------------------------------
const U8 MN2_CON_KnlHexStr[] = "0123456789ABCDEF";
int MN2_KNL_AsciiToHex( P_U8 pHexTxt, P_U8 pAscTxt, int iAscTxtLen )
{
register P_U8 pHexStr;
register P_U8 pAscCur;
register int Index;
P_U8 pAscEnd;


SCI_ASSERT( pHexTxt );
SCI_ASSERT( pAscTxt );
pHexStr = pHexTxt;
pAscCur = pAscTxt;
pAscEnd = pAscTxt + iAscTxtLen;
while( pAscCur < pAscEnd )
{
Index = *(pAscCur) >> 4;
*pHexStr++ = MN2_CON_KnlHexStr[Index];
Index = *(pAscCur) & 0x0F;
*pHexStr++ = MN2_CON_KnlHexStr[Index];

pAscCur++;
}

return (iAscTxtLen * 2);
}
hmily0917 2007-09-06
  • 打赏
  • 举报
回复
typedef unsigned char *P_U8;
#define SCI_ASSERT(_EXP) assert(_EXP)
hmily0917 2007-09-06
  • 打赏
  • 举报
回复
//----------------------------------------------------------------------
// 16进制码转换ASCII码
//----------------------------------------------------------------------
int MN2_KNL_HexToAscii( P_U8 pAscTxt, P_U8 pHexTxt, int iHexTxtLen )
{
register P_U8 pAscStr;
register P_U8 pHexCur;
P_U8 pHexEnd;


SCI_ASSERT( pAscTxt );
SCI_ASSERT( pHexTxt );
SCI_ASSERT( !(iHexTxtLen & 1) );
pAscStr = pAscTxt;
pHexCur = pHexTxt;
pHexEnd = pHexCur + iHexTxtLen;
while(pHexCur < pHexEnd)
{
//填写ASCII码的高4位
if( ('0' <= *pHexCur) && ('9' >= *pHexCur) )
{
*pAscStr = (*pHexCur & 0x0F) << 4;
}
else if( ('A' <= *pHexCur) && ('F' >= *pHexCur) )
{
*pAscStr = (*pHexCur - 'A' + 10) << 4;
}
else if( ('a' <= *pHexCur) && ('f' >= *pHexCur) )
{
*pAscStr = (*pHexCur - 'a' + 10) << 4;
}
pHexCur++;

//填写ASCII码的低4位
if( ('0' <= *pHexCur) && ('9' >= *pHexCur) )
{
*pAscStr += (*pHexCur & 0x0F);
}
else if( ('A' <= *pHexCur) && ('F' >= *pHexCur) )
{
*pAscStr += (*pHexCur - 'A' + 10);
}
else if( ('a' <= *pHexCur) && ('f' >= *pHexCur) )
{
*pAscStr += (*pHexCur - 'a' + 10);
}
pHexCur++;

pAscStr++;
}

return (int)(iHexTxtLen / 2);
}

可以参考参考
justicesun 2007-08-08
  • 打赏
  • 举报
回复
汗...没想到我这么愚蠢...

谢谢,lockhall(飞刀 || 小李飞刀的飞,小李飞刀的刀)

去http://community.csdn.net/Expert/topic/5698/5698267.xml?temp=5.498904E-02
结50分...
cailei0596 2007-08-07
  • 打赏
  • 举报
回复
给 你 看看 我提问 的 帖子 ,希望能有 所 帮助
http://community.csdn.net/Expert/topic/5694/5694110.xml?temp=.3604395
isarc 2007-08-07
  • 打赏
  • 举报
回复
看这个代码应该是很简单的,怎么不一样了?哪里不一样,不要一次转换那么多,把转换错误的地方单独测试,跟踪看看变量的变化就知道了。
isarc 2007-08-07
  • 打赏
  • 举报
回复
sf
lockhall 2007-08-07
  • 打赏
  • 举报
回复
if(48<=f<=57)

这个没有这样表达的

改为if(f >= 48 && f <= 57)
justicesun 2007-08-07
  • 打赏
  • 举报
回复
顶...期待有人帮我改改代码

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧