MFC 16进制转10进制
时间: 2023-08-28 12:10:44 浏览: 186
MFC中可以使用CString和strtol函数来实现16进制转10进制的功能。首先,需要包含afx.h头文件,并在Project->Settings->General->Mircosoft Foundation Classes中选择Use MFC in a Shared DLL,以便在Win32控制台下使用CString变量。然后,可以使用下面的代码来实现16进制转10进制的功能:
```cpp
#include <iostream>
#include <afx.h>
int ChangeNum(CString str, int length) {
char revstr\[16\] = {0};
int num\[16\] = {0};
int count = 1;
int result = 0;
strcpy(revstr, str);
for (int i = length - 1; i >= 0; i--) {
if ((revstr\[i\] >= '0') && (revstr\[i\] <= '9'))
num\[i\] = revstr\[i\] - 48;
else if ((revstr\[i\] >= 'a') && (revstr\[i\] <= 'f'))
num\[i\] = revstr\[i\] - 'a' + 10;
else if ((revstr\[i\] >= 'A') && (revstr\[i\] <= 'F'))
num\[i\] = revstr\[i\] - 'A' + 10;
else
num\[i\] = 0;
result = result + num\[i\] * count;
count = count * 16;
}
return result;
}
int main() {
CString str = "0x11";
int n = 0;
n = ChangeNum(str, str.GetLength());
printf("%d\n", n);
return 0;
}
```
这段代码会将16进制字符串"0x11"转换为10进制数17,并输出结果为17。\[1\]\[2\]另外,也可以使用strtol函数来实现16进制转10进制的功能,代码如下:
```cpp
#include <stdio.h>
#include <stdlib.h>
int main() {
char *p = "0x11";
char *str;
int i = (int)strtol(p, &str, 16);
printf("%d\n", i);
return 0;
}
```
这段代码同样会将16进制字符串"0x11"转换为10进制数17,并输出结果为17。\[3\]
#### 引用[.reference_title]
- *1* [MFC中如何将16进制字符转化成10进制,包括CString与char*的转换](https://blog.csdn.net/weixin_30337157/article/details/98652405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [将一个十六进制字符串转换为十进制数值的问题](https://blog.csdn.net/delphiwcdj/article/details/4649854)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文