c++ MFC 将编辑控件中的字符串转换为十六进制

c++ MFC converting a string in an edit control to hexidecimal

本文关键字:字符串 转换 十六进制 MFC 编辑 控件 c++      更新时间:2023-10-16

如果我在源代码中定义字符串,我可以完美地将字符串转换为十六进制

,例如:
int input = 15;
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);

结果是"f",但是如果我这样做,为什么会这样:

TCHAR buffer[500];
int input = GetDlgItemText(TOCON, buffer, 50);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);

输出是"2"?我尝试了其他几种从编辑控件获取文本的方法,但每种方法都返回了错误的结果。我从控件获取文本的方式是否有问题,或者我为 maxcount 设置了什么?

>GetDlgItemText将文本从编辑控件复制到缓冲区中,并返回从对话框控件读取的字符数,而不是解释为数字的文本。要走的方法是首先将 buffer 中的字符串转换为整数,然后将其提供给 output.Format .例如,您可以使用函数 atoi .修改后的代码如下所示:

TCHAR buffer[500];
GetDlgItemText(TOCON, buffer, 50);
int input = atoi(buffer);
CString output;
output.Format(L"%x", input);
m_oput.SetWindowText(output);