HJ5 进制转换 2022-03-12 周六

题目

  • 描述
    写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

  • 输入描述:
    输入一个十六进制的数值字符串。

  • 输出描述:
    输出该数值的十进制字符串。不同组的测试用例用\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)

你可能感兴趣的:(HJ5 进制转换 2022-03-12 周六)