洛谷B3869 [GESP202309 四级] 进制转换

一、原理

这段代码的主要功能是将不同进制(2 - 16 进制)的数转换为十进制数。其核心原理基于进制转换的基本规则:对于一个  进制数 ,将其按位展开,每一位的数值乘以  的相应次幂(幂次从右到左依次递增),然后将所有结果相加,就可以得到对应的十进制数。

二、步骤

  1. 字符转换函数 charToValue
    • 该函数接收一个字符 c 作为参数,用于将字符形式的数字转换为对应的数值。
    • 如果字符 c 是 0 到 9 之间的数字字符,通过 c - '0' 得到其对应的数值。
    • 如果字符 c 是 A 到 F 之间的大写字母,代表十六进制中的 10 到 15,通过 10 + (c - 'A') 得到其对应的数值。
    • 若输入的字符不符合上述规则,返回 0(在正常输入情况下,不会执行到这一步)。
  2. 进制转换函数 change
    • 该函数接收两个参数:一个整数 K 表示输入数字的进制,一个字符串 X 表示要转换的  进制数。
    • 初始化两个变量:result 用于存储最终的十进制结果,初始值为 0base 用于存储当前位的权值,初始值为 1(即 )。
    • 从字符串 X 的最后一位(最低位)开始,逐位向前遍历。
    • 对于每一位,调用 charToValue 函数将字符转换为对应的数值 digit
    • 将 digit 乘以当前位的权值 base,并累加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值