VC++中的字符串操作

ryu2003 2010-04-22 10:28:01
需求:

现有1CSting类型的变量,定义为Csting m_str,有1个char组,定义为char ShowMe[256],另,在showme中,showme[0]=0xf8,showme[1]=0x03,而m_str = “192.168.1.12”,现在需要做的事情就是,将m_str的每一位转换成它的ASCII码,并且存到showme里面,在存的时候,需要在字符的ASCII码前面加上0X,数组的结尾用0x0A表示:

例如:m_str = "0",那么showme应该为:showme[4] = {0XF8,0X03,0X30,0X0A}

m_str = "00",那么showme应该为:showme[5] = {0XF8,0X03,0X30,0X30,0X0A}

m_str = "01",那么showme 应该为:showme[5] = {0XF8,0X03,0X30,0X31,0X0A}

求高手指点详细代码!!!
...全文
283 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
退学者的游戏 2010-04-28
  • 打赏
  • 举报
回复
先请问 您的CString是unicode还是多字节字符集?
尹成 2010-04-24
  • 打赏
  • 举报
回复
char *p=m_str;
ShowMe[0]='{';
int i=1;
while(*p)
{
sprintf(ShowMe+i,"0x%02X,",*p++);
i+=5;
}
ShowMe[i-1]='}';
ShowMe[i]=0;
cnzdgs 2010-04-24
  • 打赏
  • 举报
回复
先向ShowMe中写入'{',然后用循环每次从m_str中取一个字符,用sprintf以"0X%02X,"格式依次输出到ShowMe后面,循环结束后把ShowMe最后一个字符改成'}'。
BoweirrKing 2010-04-24
  • 打赏
  • 举报
回复
sprintf(ShowMe+i,"0x%02X",*p++);
这句少了个逗号,i自增也得改下,改成:
char *p=m_str;
ShowMe[0]='{';
int i=1;
while(*p)
{
sprintf(ShowMe+i,"0x%02X,",*p++);
i+=5;
}
ShowMe[i-1]='}';
ShowMe[i]=0;

BoweirrKing 2010-04-24
  • 打赏
  • 举报
回复
char *p=m_str;
ShowMe[0]='{';
int i=1;
while(*p)
{
sprintf(ShowMe+i,"0x%02X",*p++);
i+=4;
}
ShowMe[i]='}';
ShowMe[i+1]=0;


其实这样的代码是有越界的隐患的,ShowMe应该是通过计算得到其大小后,动态申请内存。但从功能上讲,就以上的代码了
ryu2003 2010-04-23
  • 打赏
  • 举报
回复
LS的能说的更详细一点么?
cnzdgs 2010-04-22
  • 打赏
  • 举报
回复
先写'{',再用sprintf逐个字符输出,格式字符串用"0X%02X,",把最后一个','改成'}'。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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