山寨:不是最好的,是最适合我们的!欢迎体验山寨 中文版MSDN
当华美的叶片落尽,生命的脉络才历历可见。 -- 聂鲁达
在网上和QQ群里广发帖,寻求解决16进制字符串CString 转为 BYTE[] 数组的方法。费尽周折在一个大学同学的帮助下,问题解决了!在这简单分析下加深印象,同时也希望对有需要的朋友有参考作用:需求:16进制字符串CString 如何转为 BYTE[] CString str ="01 02 03 04";BYTE cmd[1024];
赋值后cmd[1024] = {0X01,0X02,0X03,0X04}; 解决方法:第一步:将ASCII码转化为16进制数(注意:ASCII码和16进制数的区别)
第二步:调用上面的那个函数来实现需求
注释:把字符赋给BYTE,实则赋的是字符的ASCII码值,因此要先把ASCII码转化为对应的16进制数。两个字符赋给一个BYTE,就要把第一个字符放到BYTE的高4位,而第二个字符放到BYTE的低4位。中间通过判断去掉空格。
posted on 2007-12-18 15:04 isabc 阅读(14026) 评论(2) 编辑 收藏 引用 所属分类: C++基础
(2007-12-18 11:42:34) 松<myri@163.com> main() { CString str ="01 02 03 04"; BYTE cmd[1024]; char *pstr=NULL; char stValue[3]={0}; DWORD dwCount = 0; DWORD i =0 ; LPTSTR lpsz =(LPTSTR)(LPCTSTR)str; pstr = (char *)lpsz; while (pstr) { if (i==2) && (*pstr != ' ') { printf("error\r\n"); } if (*pstr != ' ') { stValue[i++]=*pstr; pstr++; continue; } else { i=0; sscanf(string, "%X", &cmd[dwcount++]); while(pstr && (*pstr==" ")) pstr++; } } printf("dwcount=%d\r\n",dwcount); } 回复 更多评论
很好,收了 回复 更多评论
Powered by: C++博客 Copyright © isabc
广告信息(免费广告联系)
中文版MSDN: 欢迎体验