16进制字符串CString 如何转为 BYTE[] 数组

来源:互联网 发布:职业性格测试 知乎 编辑:程序博客网 时间:2024/05/19 00:55

需求:
16
进制字符串CString如何转为BYTE[]数组
CString str ="56 45 52 30 30";
BYTE buf[64];

赋值后
buf[64] =  {0X56,0X45,0X52,0X30,0X30};

 

int CCP210xSerialTestDlg::Str2Hex(CString str, unsigned char *data)
{
 unsigned int t;
 int Length;
 int len=str.GetLength();
 char a[10]={0};

 Length=0;

 for(int i=0; i<len; )
 {
  if(str[i]==' ')  //空格
  {
   i++;
   continue;
  }

  a[0]=str[i]; // high byte

  i++;
  if (i>=len)
  {
   break;
  }

  a[1]=str[i]; // low byte

  a[2]='/0';  // 字符串结束标志

  t=strtoul(a,NULL,16);   //将字符串转换成无符号长整型数
  data[Length]=(unsigned char)t;
  Length++;

  i++;
 }

 return Length;  //转换的字节数
}

处理这类问题的方法很多,我的方法的特点在于使用了strtoul()函数。

虽然可行,但我还是有疑问,CString类可以直接用数组下标的方式(str[i])访问吗?感觉是不可以这样做,却能解决问题,很纳闷。希望有高手指点一下,不胜感谢。

傅绍兵

2010-11-11

原创粉丝点击