首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VC++ MFC 編程:十進制轉十六進制函數實現與按鈕事件調用

     編輯:程式設計疑難解答

需求

在 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;
}

MFC 學習建議

  • 掌握 CString、CWnd::GetDlgItem、DDX/DDV 數據交換機制。
  • 善用 Class Wizard 添加控件變量與消息映射。
  • 參考 MSDN《MFC Reference》與《Programming Windows with MFC》經典教材。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved