[转]CString 如何转为 BYTE[] 数组
2010-05-09 14:12
232 查看
16进制字符串CString 如何转为 BYTE[] 数组
http://www.cppblog.com/Lee7/archive/2008/08/22/38887.html在网上和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进制数的区别)
//将ASCII码转化为16进制数
BYTE CSendDataDlg::ConvertHexChar(BYTE ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;
else
return -1;
}
第二步:调用上面的那个函数来实现需求
CString str ="01 02 03 04";
BYTE tmpByte = 0x00;
int strLen = str.GetLength();
BYTE cmd[1024];
memset(cmd, '/0', sizeof(cmd));
for (int i=0, j=0; i<1024,j<strLen; i++,j++)
{
if (str[j] == ' ')
++j;
tmpByte = str[j];
cmd[i] = ConvertHexChar(tmpByte)<<4;//左移4位
if (str[++j] == ' ')
++j;
tmpByte = str[j];
cmd[i] = cmd[i] + (ConvertHexChar(tmpByte) & 0xF);//取低4位然后相加。
}
注释:
把字符赋给BYTE,实则赋的是字符的ASCII码值,因此要先把ASCII码转化为对应的16进制数。
两个字符赋给一个BYTE,就要把第一个字符放到BYTE的高4位,而第二个字符放到BYTE的低4位。
中间通过判断去掉空格。
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); }
相关文章推荐
- 16进制字符串CString 如何转为 BYTE[] 数组
- byte数组如何转为short数组 (转)
- 16进制字符串CString 如何转为 BYTE[]
- byte数组如何转为short数组
- CString 16进制字符串转为 BYTE[] 数组
- JAVA中 byte[]数组如何转为InputStream
- Java中如何将以byte数组给出的数据转换为double数组形式
- CString或const char数组转byte数组(unsigned char数组)
- java如何将数组转换为集合以及将String型数组转为Long型数组
- Unicode编码的byte 数组转为String
- C#中如何把byte[]数组转换成其他类型
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- 十六进制字符串(CString或char[]) 和 BYTE,char数组 相互转化
- 如何让byte数组转换为String字符串时候去除乱码的问号
- 如何将自定义的structure转换为byte数组(VB.Net)
- 使用C#将Byte数组中含有的BCD码转换成字符串,及如何将字符串转换成BCD码
- 如何把类数组转为数组
- silverlight中如何将BitmapImage转化为Stream或byte数组?
- 在C#中如何比较两个byte[]数组相等
- 在C#中如何比较两个byte[]数组相等