您的位置:首页 > 编程语言 > C语言/C++

C++用Edit Control时,读取输入的数据,和向里面写数据。主要是CSrting和十六进制(HEX)转换

2014-09-25 19:08 447 查看
因为是用USB通信,单片机识别指令一般都是十六进制,和串口差不多,我的起始目的是想获取Edit Control控件中的字符串,然后每两个字符转换成一个16进制数,如Edit Control控件中输入了:EEA200022266,我把它处理成0XEE,0XA2,0X00,0X02,0X22,0X66(我这是一个IIC写命令

)。

首先我们分析问题:

1.从Edit Control控件中获取输入的字符串,得到的是CString类型的数据。

a.我们包含#include <string>头文件

b.我们会用到命名空间:在头文件下面包含using namespace std;

c.CString ST,Ti;int Len = 0 ,i=0;int y[i]={0};unsigned char packet[256];

memset(packet, 0x00, 256);

GetDlgItem(IDC_EDIT_TX)->GetWindowText(ST);//从
IDC_EDIT_TX控件中获取的数据放在ST中。

Len=ST.GetLength();//长度

SetDlgItemInt(IDC_EDIT_RX,Len);//在另外一个Edit Control控件中显示长度(可以不要)

for(i=0;i<Len;i++)

{

Ti=Str.Mid(i,1);//一个个取字符

y[i]=strtol((LPSTR)(LPCTSTR)Ti,NULL,16);//将每个字符转换成一个16进制数

}

for(i=0;i<Len/2;i++)

{

packet[i]=(BYTE)(y[i*2]*16+y[i*2+1]);//每两个字符组合成一个十六进制发送

}

这样packet数组中存放的就是0xAA形式的十六进制数据了!

这种方法没有用到很多库函数,我当时也一心想找库函数,最后还是发现自己写吧!!!不要想的那么复杂,就当CString------int-----16进制,按照这个流程!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: