將待發送的字符串轉換成單字節,進行發送buf=new char[strSend.GetLength()*2+1]怎么理解? 為什么長度乘二加一呢?麻煩各位高手指點//發送數據void CSerialSampleDlg::OnBnClickedBtnSend(){char * buf =NULL; //定義發送緩沖區DWORD dwBufLen = 0; //定義發送緩沖區長度CString strSend = L"";//得到發送輸入框CEdit *pEdtSendMsg = (CEdit*)GetDlgItem(IDC_EDT_SEND);ASSERT(pEdtSendMsg != NULL);//串口如果沒有打開,直接返回if (m_pSerial == NULL){AfxMessageBox(L"串口未打開");return;}//得到待發送的字符串pEdtSendMsg->GetWindowTextW(strSend);//將待發送的字符串轉換成單字節,進行發送buf = new char[strSend.GetLength()*2+1];ZeroMemory(buf,strSend.GetLength()*2+1);//轉換成單字節進行發送 WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,strSend.GetBuffer(strSend.GetLength()),strSend.GetLength(),buf,strSend.GetLength()*2,NULL,NULL);dwBufLen = strlen(buf) + 1;//發送字符串m_pSerial->WriteSyncPort((BYTE*)buf,dwBufLen);//釋放內存delete[] buf;buf = NULL;}沒看懂為什么要將它轉換成單字節來發送,并且長度要乘以2菜鳥一只,請高手指點
以下代碼,buf=new char[strSend.GetLength()*2+1]怎么理解?
慕尼黑5688855
2021-11-10 11:07:32