在 MFC 對話框中,編輯框輸入十進制數,點擊「發送」按鈕將其轉換為十六進制字串並發送。
CString DecToHex(int nValue)
{
CString strHex;
strHex.Format(_T("%04X"), nValue); // 4位大寫十六進制,不足補0
return strHex;
}
// 若輸入為字串(如 "255")
CString StrDecToHex(const CString& strDec)
{
int nVal = _ttoi(strDec);
return DecToHex(nVal);
}
void CMyDlg::OnBnClickedBtnSend()
{
CString strDec;
m_editDec.GetWindowText(strDec); // 獲取編輯框內容
strDec.Trim();
if (strDec.IsEmpty()) {
AfxMessageBox(_T("請輸入十進制數值"));
return;
}
CString strHex = StrDecToHex(strDec);
// 發送邏輯...
m_editHex.SetWindowText(strHex); // 顯示結果
}
// 輸入: "255 1024 65535" (空格分隔)
// 輸出: BYTE 陣列 {0xFF, 0x00, 0x04, 0xFF, 0xFF}
std::vector<BYTE> DecStringToBytes(const CString& strInput)
{
std::vector<BYTE> bytes;
CString token;
int cur = 0;
while (AfxExtractSubString(token, strInput, cur++, ' ')) {
int val = _ttoi(token);
if (val >= 0 && val <= 0xFF) bytes.push_back((BYTE)val);
else if (val <= 0xFFFF) {
bytes.push_back((BYTE)(val >> 8));
bytes.push_back((BYTE)(val & 0xFF));
}
}
return bytes;
}
CString、CWnd::GetDlgItem、DDX/DDV 數據交換機制。