字符串转十进制数字并输出"/>
Java中十六进制字符串转十进制数字并输出
首先,java中16进制是以0x开头的。
现在有一个问题:
如何将它转为10进制输出呢?
16进制中a-10 ,b-11....f-15
首先要明白16进制是如何转为10进制的:从右向左,字母或者数字依次乘以16的幂(幂是从0开始)
这是就有人会说:那不好办?直接来一个for循环,遍历字符串,从前往后,依次获取,把字符强转为int型 减去相应的值,(A对应的ASCII值为65,a对应的ascii值为97)再乘以幂不就行了?
不好意思。
如果有小写,阁下该如何应对呢?
如果数字穿插,阁下又该如何应对呢?
如果阁下处理字母时,还判断是否为大小写,我只能说,阁下有些多此一举了。
为何不全部转为大写,或者全部转为小写呢?
我这里全部转为大写了。
然后除了字符串开头的"0x",其余的都转为int,是不是就行了?
我之前说过,不只有字母,还有数字哩。
那么,小编在这里提问大家一个问题:
请问输出结果是什么?
说0的话,那可就g了。
正确答案:
那么,也就是说,我们要判断,里面的字符到底是字母,还是数字。
怎么判断呢?
用Ascii值,我觉得可以。
这个判断是否为字母:
这个 判断是否为数字:
因为16进制中A对应10,而Ascii中A对应65,所以字母强转为整型要减55.
字符0对应的ASCII为48,所以数字强转为整型要减48.
接下来,我们要乘16的幂。
这时就用到了Math.pow()函数。
pow()中有两个参数。第一个为底数,第二个参数为指数。
但是for循环里面是从最后一位开始判断的,而幂是从0开始的。所以我们要再定义一个变量j,从0开始递增。
代码如下:
总代码:
输出结果:
更多推荐
Java中十六进制字符串转十进制数字并输出
发布评论