请问个算法问题!!!

大V雪 2010-11-30 04:12:28
ASC码:2010年11月29日17时41分52秒

HEX表示:32 30 31 30 C4 EA 31 31 D4 C2 32 39 C8 D5 31 37 CA B1 34 31 B7 D6 35 32 C3 EB 0D 0A

请问怎么实现ASC字符串和HEX字符串的互相转换,主要是HEX转换成ASC码?
...全文
175 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2010-12-01
  • 打赏
  • 举报
回复
我写的是初始化。
你是赋值,那就不要:
temp_str[0] = '0';
temp_str[1] = 'x';
大V雪 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 schlafenhamster 的回复:]
ASC码:“2010年11月29日17时41分52秒”
==
HEX表示:32 30 31 30 C4 EA 31 31 D4 C2 32 39 C8 D5 31 37 CA B1 34 31 B7 D6 35 32 C3 EB 0D 0A 即:

char ascStr[]={0x32,0x30,0x31,0x30,0xC4,0xEA,0x31,0x31,0xD4,0xC2,0x32,
……
[/Quote] str_tmp = TemStr.Mid(i,2);
BYTE temp = 0;
char temp_str[4];
temp_str[0] = '0';
temp_str[1] = 'x';
temp_str[2] = str_tmp[0];
temp_str[3] = str_tmp[1];
str = temp_str;


我这样不对啊
schlafenhamster 2010-12-01
  • 打赏
  • 举报
回复
//
BYTE HexValue(unsigned char a)
{
a -= 48;
if(a > 9 ) a -= 7;
return a;
}
//"2010年11月29日17时41分52秒"
CString TmpStr="32 30 31 30 C4 EA 31 31 D4 C2 32 39 C8 D5 31 37 CA B1 34 31 B7 D6 35 32 C3 EB";// 0D 0A";注意
char AscStr[100]={0};
int len=TmpStr.GetLength();
int i=0;
int k=0;
while(i<len)
{
AscStr[k]=16*HexValue(TmpStr.GetAt(i))+HexValue(TmpStr.GetAt(i+1));
i += 3;
k++;
}
afxDump << AscStr << "\n";
schlafenhamster 2010-11-30
  • 打赏
  • 举报
回复
ASC码:“2010年11月29日17时41分52秒”
==
HEX表示:32 30 31 30 C4 EA 31 31 D4 C2 32 39 C8 D5 31 37 CA B1 34 31 B7 D6 35 32 C3 EB 0D 0A 即:

char ascStr[]={0x32,0x30,0x31,0x30,0xC4,0xEA,0x31,0x31,0xD4,0xC2,0x32,
0x39,0xC8,0xD5,0x31,0x37,0xCA,0xB1,0x34,0x31,0xB7,0xD6,
0x35,0x32,0xC3,0xEB,0x0D,0x0A};
大V雪 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jacklzw88 的回复:]
sprintf(hex,"%x",asc[i]);这个是ASC字符串转成HEX字符串

至于HEX字符串转成ASC字符串
char c_temp[3] ={0};
memcpy(c_temp,hex[2*i],2);
int i_temp = atoi(c_temp);
asc[i] = i_temp;
[/Quote]........
jacklzw88 2010-11-30
  • 打赏
  • 举报
回复
atoi应该有个参数,需要设置16进制的。
jacklzw88 2010-11-30
  • 打赏
  • 举报
回复
随便写的不知道对不对,你自己调试了,呵呵
jacklzw88 2010-11-30
  • 打赏
  • 举报
回复
sprintf(hex,"%x",asc[i]);这个是ASC字符串转成HEX字符串

至于HEX字符串转成ASC字符串
char c_temp[3] ={0};
memcpy(c_temp,hex[2*i],2);
int i_temp = atoi(c_temp);
asc[i] = i_temp;
mayudong1 2010-11-30
  • 打赏
  • 举报
回复
‘1’=1,‘2’=2,。。。
'a'=10,'b'=11,...
'A'=10,'B'=11,..
就这样转换呗
大V雪 2010-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liu_siat 的回复:]
sprintf(hex,"%x",asc[i]);
itoa()
atoi()
[/Quote]可以就我的实例数据写个小算法吗?
liu_siat 2010-11-30
  • 打赏
  • 举报
回复
sprintf(hex,"%x",asc[i]);
itoa()
atoi()
ouyh12345 2010-11-30
  • 打赏
  • 举报
回复
itoa或_itoa_s
jacklzw88 2010-11-30
  • 打赏
  • 举报
回复
spritf(hex,"%x",asc[i]);

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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