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

需求:
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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值