题目:
解析:
-
十六进制转十进制(百度百科)
-
理解了十六进制转十进制以后,大致的思路就是,你得把除0-9的数字以外的A 、B 、C 、D 、E 、F 这六个对应的数字定义为一个对象中,以便后续使用(具体看代码)
-
最后需要注意的就是,计算十六进制到十进制时,第一位是在末尾。好了 可以写代码了
代码产出:
方法一: 就是直接倒着读取字符串
var fn = (line) => {
// A B C D E F 各指的数字
var obj = {
A: 10,
B: 11,
C: 12,
D: 13,
E: 14,
F: 15
}
var str = line.substr(2)
var sum = 0
for (let i = str.length - 1, j = 0;i >= 0;i--, j++) {
if (!isNaN(str[i])) {
sum += Number(str[i]) * Math.pow(16, j)
} else {
sum += obj[str[i].toLocaleUpperCase()] * Math.pow(16, j)
}
}
console.log(sum)
}
方法二: 就是先将字符串翻转
var str = line.substr(2).split(’’).reverse().join(’’)
var fn = (line) => {
// A B C D E F 各指的数字
var obj = {
A: 10,
B: 11,
C: 12,
D: 13,
E: 14,
F: 15
}
var str = line.substr(2).split('').reverse().join('')
var sum = 0
for (let i = 0;i < str.length;i++) {
if (!isNaN(str[i])) {
sum += Number(str[i]) * Math.pow(16, i)
} else {
sum += obj[str[i].toLocaleUpperCase()] * Math.pow(16, i)
}
}
console.log(sum)
}