首页 > 代码库 > MFC输入框CEdit控件十六进制转换
MFC输入框CEdit控件十六进制转换
做MFC串口发送的时候,一般使用CEdit控件作为发送输入框,一般是发送输入框关联一个CString的变量,通过updatedata更新,大部分情况下我们需要使用十六进制发送,但是CString默认是字符串格式,比如输入框输入11 22 33 44 55,实际上是内容"11 22 33 44 AA",我们希望将它转换为0x11,0x22,0x33,0x44,0xaa。
那么如何实现了,通过下列的2个函数实现
1 //将一个字符串作为十六进制串转化为一个字节数组,字节间可用空格分隔, 2 //返回转换后的字节数组长度,同时字节数组长度自动设置。 3 //说明:将字符串str[]="11 22 33 44 AA"转换成0x11,0x22,0x33,0x44,0xaa 4 int CMFC_Uart20160921Dlg::Str2Hex(CString str, char* data) 5 { 6 int t, t1; 7 int rlen = 0, len = str.GetLength(); 8 //data.SetSize(len/2); 9 for (int i = 0; i<len;)10 {11 char l, h = str[i];12 if (h == ‘ ‘)13 {14 i++;15 continue;16 }17 i++;18 if (i >= len)19 break;20 l = str[i];21 t = HexChar(h);22 t1 = HexChar(l);23 if ((t == 16) || (t1 == 16))24 break;25 else26 t = t * 16 + t1;27 i++;28 data[rlen] = (char)t;29 rlen++;30 }31 return rlen;32 }33 34 char CMFC_Uart20160921Dlg::HexChar(char c)35 {36 if ((c >= ‘0‘) && (c <= ‘9‘))37 return c - 0x30;38 else if ((c >= ‘A‘) && (c <= ‘F‘))39 return c - ‘A‘ + 10;40 else if ((c >= ‘a‘) && (c <= ‘f‘))41 return c - ‘a‘ + 10;42 else43 return 0x10;44 }
测试代码如下
char data[512];//十六进制发送int iLen = Str2Hex(m_EditSend,data);//m_EditSend是CEit控件关联的CString变量pThreadCom->SendData((BYTE *)data, iLen);//通过串口发送数据
MFC输入框CEdit控件十六进制转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。