Javascript Node解法

const readline = require("readline")
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

rl.on('line', function(input){
    changeNum(input)
})

// 定义十六进制超出9以外的字符进行数字转义
const transObj = {
    'a': 10,
    'b': 11,
    'c': 12,
    'd': 13,
    'e': 14,
    'f': 15
}

function changeNum(input){
 	//从下标为2的地方截取字符串,例0xaa -> aa
    const str = input.substr(2).toLowerCase()
    let res = 0,k=1
    for(let i = str.length - 1; i>= 0; i--){
      	// 如果本身是9以内的数字,那么直接乘以k
        if(Number(str[i]) >= 0){
            res += Number(str[i])*k
        }else{
          	// 本身并不是9以内的数字,那就需要转换,再乘以k
            res += transObj[str[i]] * k
        }
      	// k代表各个位上的值
        k *= 16
    }
    console.log(res)
}