请问如何把0x和41合并为0x41?
//代码如下
//m_claddr是一个编辑框IDC_EDT_ADDR的变量,CString m_claddr;
//编辑框已经初始化为 SetDlgItemText(IDC_EDT_ADDR,_T("41"));
//希望让ml[3]在值的修改后变为0x41
unsigned char ml[20] = {0xEB,0x90,0x04,0x00,0x01,0x00,0x46};
ml[3] = (unsigned char)(_T("0x"))+(unsigned char)m_claddr.GetBuffer();
//求大侠帮忙~~~谢谢
CString m_claddr, strRecv;
unsigned char ml[20] = {0xEB,0x90,0x04,0x00,0x01,0x00,0x46};
//**************** 设置编辑框的值为41 ***************//
GetDlgItem(IDC_EDIT1)->SetWindowTextW(_T("41"));
//********* 按键后改变ml[3]的值为0x41, 其中自己设置按键产生的消息响应 *********//
GetDlgItem(IDC_EDIT1)->GetWindowTextW(m_claddr);
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP,0,m_claddr,-1,NULL,0,NULL,NULL);
ptr = new char[len+1];
memset(ptr,0,len+1);
WideCharToMultiByte(CP_ACP,0,m_claddr,-1,ptr,len+1,NULL,NULL);
#else
ptr =new char[m_claddr.GetAllocLength()+1];
sprintf(ptr,_T("%s"),m_claddr);
#endif
int num = atoi(ptr);
if(num >100)
return ;
ml[3] = (num/10)*0x10 + (num%10);
//***************** 相加 ***************//
int Sum =0;
for(int i=0;i<7;i++)
{
Sum += ml[i];
}
ml[6] =Sum;
是这样的吗?
ml[3] = (unsigned char)((_T("0x"))+m_claddr);
可是报了这样的错~~~是我哪里写错了吗?
//是这样的吗?
ml[3] = (unsigned char)((_T("0x"))+m_claddr);
//可是报了这样的错~~~
//无法从“ATL::CStringT<BaseType,StringTraits>”转换为“unsigned char”
//是我哪里写错了吗?
m_claddr.Empty();
GetDlgItem(IDC_EDT_ADDR)->GetWindowTextW(m_claddr);
m_claddr = _T("0x) + m_claddr;
SetDlgItemTextW(IDC_EDT_ADDR, m_claddr);
m_claddr.Empty();
GetDlgItem(IDC_EDT_ADDR)->GetWindowTextW(m_claddr);
m_claddr = _T("0x") + m_claddr;
SetDlgItemTextW(IDC_EDT_ADDR, m_claddr);
//编辑框1的值我写的是41,我刚刚这样写了下,为什么结果会是
//==========================
//eb 90 4 40 1 0 45
//==========================
//而不是eb 90 4 41 1 0 46呢
//代码如下
unsigned char ml[20] = {0xEB,0x90,0x04,0x00,0x01,0x00,0x46};
m_claddr.Empty();
GetDlgItem(IDC_EDIT1)->GetWindowTextW(m_claddr);
m_claddr = _T("0x") + m_claddr;
ml[3] = (unsigned char)(m_claddr.GetBuffer());
for(int i=0;i<7;i++)
{
CString s;
s.Format(_T("%x "),ml[i]);
strRecv += s;
SetDlgItemText(IDC_EDIT2,strRecv);
}
//编辑框1的值我写的是41,我刚刚这样写了下,为什么结果会是
//==========================
//eb 90 4 40 1 0 45
//==========================
//而不是eb 90 4 <span style="color: rgb(255, 0, 0);">41</span> 1 0 46呢
//代码如下
unsigned char ml[20] = {0xEB,0x90,0x04,0x00,0x01,0x00,0x46};
m_claddr.Empty();
GetDlgItem(IDC_EDIT1)->GetWindowTextW(m_claddr);
m_claddr = _T("0x") + m_claddr;
ml[3] = (unsigned char)(m_claddr.GetBuffer());
ml[6] =ml[2] + ml[3] + ml[4] + ml[5];
for(int i=0;i<7;i++)
{
CString s;
s.Format(_T("%x "),ml[i]);
strRecv += s;
SetDlgItemText(IDC_EDIT2,strRecv);
}
CString m_claddr, strRecv;
unsigned char ml[20] = {0xEB,0x90,0x04,0x00,0x01,0x00,0x46};
// 设置编辑框的值为41
//GetDlgItem(IDC_EDIT1)->SetWindowTextW(_T("41"));
// 按键后改变ml[3]的值为0x41, 其中自己设置按键产生的消息响应;
//GetDlgItem(IDC_EDIT1)->GetWindowTextW(m_claddr);
m_claddr = _T("41");
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP,0,m_claddr,-1,NULL,0,NULL,NULL);
ptr = new char[len+1];
memset(ptr,0,len+1);
WideCharToMultiByte(CP_ACP,0,m_claddr,-1,ptr,len+1,NULL,NULL);
#else
ptr =new char[m_claddr.GetAllocLength()+1];
sprintf(ptr,_T("%s"),m_claddr);
#endif
int num = atoi(ptr);
if(num >100)
return ;
ml[3] = (num/10)*0x10 + (num%10);
// 相加;
int Sum =0;
for(int i=0;i<7;i++)
{
Sum += ml[i];
}
ml[6] =Sum;