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

本文介绍如何从C++中的EditControl控件获取字符串,并将其转换为十六进制数。通过使用CString类型和标准库函数,实现了字符串的逐字符读取及十六进制转换。

因为是用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进制,按照这个流程!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值