stm32 16进制转10进制
时间: 2025-01-06 21:42:11 浏览: 9
### STM32 中实现16进制转换为10进制
在STM32平台中,可以采用特定的算法来完成将十六进制字符串转换成十进制数值的任务。下面给出了一种简单而有效的方式来进行这种类型的转换。
对于每一个字符位置上的值乘以其权重(即它所代表的位置权),并累加起来得到最终的结果。具体来说,在处理每一位时,先判断其是否属于合法的十六进制字符范围('0'-'9', 'A'-'F'),再将其映射到对应的整数表示形式;之后按照位权相乘求和即可获得目标十进制数[^2]。
下面是具体的C语言代码示例:
```c
#include "stdio.h"
// 十六进制字符串转十进制数值函数定义
uint32_t HexStrToDec(const char *hex_str){
uint32_t dec_val = 0;
while (*hex_str != '\0'){
// 判断当前字符是不是有效的十六进制字符,并计算对应数值
if((*hex_str >= '0') && (*hex_str <= '9')){
dec_val = (dec_val << 4) | ((*hex_str - '0'));
}else if((*hex_str >= 'a') && (*hex_str <= 'f')){
dec_val = (dec_val << 4) | ((*(hex_str)-'a'+10));
}else if((*hex_str >= 'A') && (*hex_str <= 'F')){
dec_val = (dec_val << 4) | ((*(hex_str)-'A'+10));
}
hex_str++;
}
return dec_val;
}
```
此段程序能够接收一个指向含有十六进制字符串的指针作为参数,经过一系列运算后返回相应的十进制无符号长整形变量`uint32_t`。需要注意的是这里假设输入总是有效的十六进制字符串,因此没有加入额外的异常情况检测逻辑。
阅读全文