题目
-
描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 -
输入描述:
输入一个十六进制的数值字符串。 -
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。 -
示例1
输入:0xAA
输出:170
思路
-
方案一,直接用字符串的parseInt就好了,第2个参数给16;
parseInt(str,16)
-
方案二,按照进制转换,从右向左,两位两位算
// 原始的字符串
const num_16 = readline()
// 10以上的字符对照表格
const numMap = {
A: 10,
B: 11,
C: 12,
D: 13,
E: 14,
F: 15
}
let res = 0
let num = num_16.slice(2) // 去掉开头的0x
if(num.length === 1) {
res = numMap[num] || num
} else {
// 字符串转数组,倒序,然后累加
num.split('').reverse().forEach((item, index) => {
const cur = numMap[item] || parseInt(item, 10)
res += cur * Math.pow(16, index)
})
}
console.log(res)
网友评论