HJ5 进制转换
题目描述
示例
代码
代码1 直接使用 parseInt或者Number转
js
/*
第一种方法
直接调用 parseInt(str, 16) // 16进制转换为10进制
或者直接调用 Number() 强转
*/
let readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.on('line', line=>{
// console.log( parseInt(line, 16) )
// 或者
console.log( Number(line) )
})
代码2 自己写代码计算,建立映射关系
js
/*
第二种方法
用一个map 存字典
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*/
let readline = require('readline')
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let dic = new Map([
['0', 0],
['1', 1],
['2', 2],
['3', 3],
['4', 4],
['5', 5],
['6', 6],
['7', 7],
['8', 8],
['9', 9],
['A', 10],
['B', 11],
['C', 12],
['D', 13],
['E', 14],
['F', 15],
])
rl.on('line', line=>{
// 截取 0x之后的字符串
let str = line.slice(2)
let pos = -1 // 当前是第几位,默认从0位开始
let sum = 0 // 最后计算的结果
// 倒着遍历字符串,累加操作
for( let i = str.length - 1; i >=0; i-- ){
pos++ // 每次进一位,初始化从-1开始的,所以 第一位是 0
let cur = dic.get( str[i] )
sum += 16 ** pos * cur
}
console.log( sum )
})