进制转换

题目描述

题目地址:http://mtw.so/5PKZ2R
题目要求:写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

解题思路

  1. 首先我们得了解16转10的方法:0xABC=C160+B161+A162
  2. 准备一个valueMap对象,将0-f所对应的数值存入
  3. 使用字符串substring()的方法截取除0x以外的字符串,再使用split()方法拆分为数组
  4. 定义x变量,记录160,也就是0
  5. 定义sum变量,记录十进制数
  6. for循环,从数组最后一位开始
  7. 注意valueMap.srcArray[i]valueMap[srcArray[i]]这两种写法是相同的

解题代码

let src
let valueMap = {
    '0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'a':10,
    'B':11,'b':11,'C':12,'c':12,'D':13,'d':13,'E':14,'e':14,'F':15,'f':15
}
while(src=readline()) {
    let srcArray = src.substring(2).split('')
    let x = 1
    let sum = 0
    for(let i=srcArray.length-1;i>=0;i--) {
        sum += x*valueMap[srcArray[i]]
        x*=16
    }
    print(sum)
}
posted @ 2022-07-25 23:55  fionna  阅读(106)  评论(0编辑  收藏  举报