1. 編輯框添加變量,并選擇變量類型為CString。
?? ?CString m_strReg;
??
?? ?DDX_Text(pDX, IDC_EDIT_REG, m_strReg);
2. 使用“strtoul”或“_tcstoul”函數(shù)將Cstring 類型轉(zhuǎn)換為16進(jìn)制/10進(jìn)制數(shù)進(jìn)行計(jì)算。
?? ?CString tmp;
?? ?UpdateData(TRUE);
?? ?UpdateData(FALSE);
?? ?
?? ?OutputDebugString(m_strReg);
?? ?m_nReg = strtoul(m_strReg, NULL, 0); //最后一個(gè)參數(shù)可以為16或者其他,為0是兼顧所有
?? ?tmp.Format("read reg:0x%x\n",m_nReg);
?? ?OutputDebugString(tmp);
注意此處不能用strtol,而且定義要用? ? unsigned int ?m_nReg;避免32位十六進(jìn)制溢出錯(cuò)誤。
3、strtol()
strtol是一個(gè)C語(yǔ)言函數(shù),作用就是將一個(gè)字符串轉(zhuǎn)換為長(zhǎng)整型long,其函數(shù)原型為:
long int strtol (const char* str, char** endptr, int base);
下面我們來(lái)看下每個(gè)參數(shù)的意義:
str是要轉(zhuǎn)換的字符
enptr是指向第一個(gè)不可轉(zhuǎn)換的字符位置的指針
base的基數(shù),表示轉(zhuǎn)換成為幾進(jìn)制的數(shù)
兩點(diǎn)注意:
當(dāng) base 的值為 0 時(shí),默認(rèn)采用 10 進(jìn)制轉(zhuǎn)換,但如果遇到 '0x' / '0X' 前置字符則會(huì)使用 16 進(jìn)制轉(zhuǎn)換,遇到 '0' 前置字符則會(huì)使用 8 進(jìn)制轉(zhuǎn)換。
若endptr 不為NULL,則會(huì)將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數(shù)無(wú)效,或不使用該參數(shù)。
例如:
#include <stdio.h>
?
char *ptr = "0xaa";
char *endptr = NULL;
int buf = 0;
?
buf= strtol(ptr, &endptr, 16);文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-601148.html
printf("buf = %d \n", buf);
輸出結(jié)果為:buf = 170
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-601148.html
到了這里,關(guān)于MFC 編輯框輸入16進(jìn)制字符串轉(zhuǎn)換為16進(jìn)制數(shù)或者10進(jìn)制數(shù)據(jù)計(jì)算的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!