进制转换
题目描述
题目地址:http://mtw.so/5PKZ2R
题目要求:写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
解题思路
- 首先我们得了解16转10的方法:0xABC=C160+B161+A162
- 准备一个
valueMap
对象,将0-f所对应的数值存入 - 使用字符串
substring()
的方法截取除0x以外的字符串,再使用split()
方法拆分为数组 - 定义x变量,记录160,也就是0
- 定义sum变量,记录十进制数
for
循环,从数组最后一位开始- 注意
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)
}