一、原理
这段代码的主要功能是将不同进制(2 - 16 进制)的数转换为十进制数。其核心原理基于进制转换的基本规则:对于一个 进制数 ,将其按位展开,每一位的数值乘以 的相应次幂(幂次从右到左依次递增),然后将所有结果相加,就可以得到对应的十进制数。
二、步骤
- 字符转换函数
charToValue
:- 该函数接收一个字符
c
作为参数,用于将字符形式的数字转换为对应的数值。 - 如果字符
c
是0
到9
之间的数字字符,通过c - '0'
得到其对应的数值。 - 如果字符
c
是A
到F
之间的大写字母,代表十六进制中的10
到15
,通过10 + (c - 'A')
得到其对应的数值。 - 若输入的字符不符合上述规则,返回
0
(在正常输入情况下,不会执行到这一步)。
- 该函数接收一个字符
- 进制转换函数
change
:- 该函数接收两个参数:一个整数
K
表示输入数字的进制,一个字符串X
表示要转换的 进制数。 - 初始化两个变量:
result
用于存储最终的十进制结果,初始值为0
;base
用于存储当前位的权值,初始值为1
(即 )。 - 从字符串
X
的最后一位(最低位)开始,逐位向前遍历。 - 对于每一位,调用
charToValue
函数将字符转换为对应的数值digit
。 - 将
digit
乘以当前位的权值base
,并累加
- 该函数接收两个参数:一个整数