写个16进制转10进制的代码stm32
时间: 2023-08-14 16:06:36 浏览: 42
以下是在 STM32 上使用 C 语言实现将一个 16 进制数转换成 10 进制数的代码:
```c
#include "stm32f10x.h"
uint32_t hex_to_dec(uint8_t *hex_str, uint32_t len) {
uint32_t dec_num = 0;
for (uint32_t i = 0; i < len; i++) {
uint8_t digit = hex_str[i];
if (digit >= '0' && digit <= '9') {
dec_num = dec_num * 16 + digit - '0';
} else if (digit >= 'a' && digit <= 'f') {
dec_num = dec_num * 16 + digit - 'a' + 10;
} else if (digit >= 'A' && digit <= 'F') {
dec_num = dec_num * 16 + digit - 'A' + 10;
} else {
return 0; // 字符串中包含非法字符,返回 0
}
}
return dec_num;
}
```
在上述代码中,函数 `hex_to_dec` 接收两个参数:一个指向 16 进制字符串的指针 `hex_str`,和字符串的长度 `len`。函数内部定义了变量 `dec_num`,表示最终转换后的 10 进制值。然后,遍历字符串中的每个字符,根据字符是数字还是字母进行不同的转换。
如果字符是数字,则将其转换成对应的整数,乘以 16 的相应次幂,累加到 `dec_num` 中;如果字符是字母,则将其转换成对应的整数,乘以 16 的相应次幂,累加到 `dec_num` 中。如果字符不是数字或字母,则返回 0,表示字符串中包含非法字符。
最后,返回变量 `dec_num`,即为转换后的 10 进制值。