基于stm32,写一个任意十六进制数转化为十进制的代码
时间: 2024-05-14 08:15:45 浏览: 10
好的,针对你的问题,我可以给出以下C语言代码:
```c
#include <stdio.h>
// 十六进制字符转换为整数
int hexCharToInt(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
return -1;
}
}
// 十六进制字符串转换为十进制整数
unsigned int hexStrToDec(char* hexStr) {
unsigned int result = 0;
int i = 0;
while (hexStr[i] != '\0') {
int digit = hexCharToInt(hexStr[i]);
if (digit == -1) {
return 0; // 非法字符
}
result = result * 16 + digit;
i++;
}
return result;
}
int main() {
char hexStr[] = "1a3f";
printf("0x%s = %u\n", hexStr, hexStrToDec(hexStr));
return 0;
}
```
这段代码会将输入的十六进制字符串转化为对应的十进制数,并输出结果。你可以把需要转换的十六进制字符串放到 `hexStr` 数组中进行测试。注意,该代码只能转换无符号整数,如果需要转换带符号整数,则需要进行额外的处理。