Day 32/100 (华为机试)16进制转化为10进制

写在前面的话

吭哧吭哧写半天,发现在JavaScript中有现成实现过的方法

哎,笨啊...

(一)题目


题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

示例1

输入

0xA

输出

10

 

(二)解题思路

1、截取输入的字符串,去掉0x

str.slice(2)

2、遍历字符串,利用对象属性找到每个字符对应的值

每一个进制位,进行16指数幂的计算,并求和;

(要在对象中包含0,否则会报错)

let obj={'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}

let num=0;

for(let i=0;i<s.length;i++){

        let v=obj[s[i]];

        num+= v*Math.pow(16,s.length-i-1)

    }

 

全部代码,如图

Day 32/100 (华为机试)16进制转化为10进制

BT的是,需要用while,才可以循环接受参数数据

提交结果如下

Day 32/100 (华为机试)16进制转化为10进制

 

(三)他山之石

写完后,查看了其他大神写的代码,有效代码就一句

parseInt(line,16)

NND...  有现成的方法,结果吭哧吭哧实现了一遍,忧桑~~

 

参考链接

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?tpId=37&&tqId=21228&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

 

以上