转自:http://hi.baidu.com/jetqu2003/blog/item/fef7f7e98e834739b90e2d15
需求:
16进制字符串CString 如何转为 BYTE[]
CString str ="01 02 03 04";
BYTE cmd[1024];
赋值后
cmd[1024] = {0X01,0X02,0X03,0X04};
第一步:将ASCII码转化为16进制数(注意:ASCII码和16进制数的区别)
BYTE CSendDataDlg::ConvertHexChar(BYTE ch)
{
}
第二步:调用上面的那个函数来实现需求
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 ++ )
{
}
注释:
把字符赋给BYTE,实则赋的是字符的ASCII码值,因此要先把ASCII码转化为对应的16进制数。
两个字符赋给一个BYTE,就要把第一个字符放到BYTE的高4位,而第二个字符放到BYTE的低4位。
中间通过判断去掉空格。
转自:
需求:
16进制字符串CString如何转为BYTE[]数组
CString str ="56 45 52 30 30";
BYTE buf[64];
赋值后
buf[64] =
int CCP210xSerialTestDlg::Str2Hex(CString str, unsigned char *data)
{
}
处理这类问题的方法很多,我的方法的特点在于使用了strtoul()函数。
虽然可行,但我还是有疑问,CString类可以直接用数组下标的方式(str[i])访问吗?感觉是不可以这样做,却能解决问题,很纳闷。希望有高手指点一下,不胜感谢。