16进制转10进制c语言代码,能在单片机里面运行
时间: 2024-10-14 17:15:18 浏览: 29
在C语言中,将十六进制数转换为十进制数可以使用`strtol()`函数,但在单片机环境中,由于资源限制,可能需要手动编写循环处理。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 十六进制字符到对应的整数值
int hex_to_dec(char ch) {
if (ch >= '0' && ch <= '9') return ch - '0';
if (ch >= 'A' && ch <= 'F') return ch - 'A' + 10;
if (ch >= 'a' && ch <= 'f') return ch - 'a' + 10;
return -1; // 非法字符
}
// 将十六进制字符串转换成十进制整数
long long hex_to_decimal(const char *hex_str) {
long long decimal = 0;
int i;
for (i = 0; hex_str[i] != '\0'; i++) {
int digit = hex_to_dec(hex_str[i]);
if (digit == -1) {
printf("Invalid character in the hexadecimal number.\n");
return -1;
}
decimal <<= 4; // 左移四位
decimal += digit; // 加上当前位的值
}
return decimal;
}
int main() {
const char* hex_num = "FF"; // 示例十六进制数
long long dec_num = hex_to_decimal(hex_num);
if (dec_num != -1) {
printf("The decimal equivalent of %s is: %lld\n", hex_num, dec_num);
}
return 0;
}
```
请注意,这个代码适用于有适当字符串处理和整数计算能力的环境,如果是在真正的单片机环境下,你可能需要优化或使用数组、循环和其他更底层的技巧来实现。
阅读全文