题解 | #进制转换#

进制转换

http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

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)
}
全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务