赞
踩
目录
一个以10为基数的数系,现实生活中接触到的数字就是十进制,锋十进一,十进位位值制记数法包括十进位和位值制两条原则,"十进"即满十进一;"位值"则是同一个数位在不同的位置上所表示的数值也就不同,如三位数"111",右边的"1"在个位上表示1个一,中间的"1"在十位上就表示1个十,左边的"1"在百位上则表示1个百。
有16个基数:0 ~ 9,A(10),B(11),C(12),D(13),E(14),F(15) ,逢十六进一.从0数到1、2、3…A、B…F,数到F时(也就是第16个数时)进一是10,跟着数11、12、13…18、19、1A、1B…这样数下去。
从最低位(右边)开始,将每个位上的数提取出来,乘以 16 的(位数-1)次方,然后求和。
(十进制默认不用写10#)
- import java.util.HashMap;
- import java.util.Scanner;
- import java.util.Set;
-
- /**
- * 十六进制转十进制
- * 0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)
- */
- public class HexToDec {
- public static void main(String[] args) {
- int dec = 0;
- Scanner sc = new Scanner(System.in);
- String hex = sc.nextLine();
-
- //先将A(10)、B(11)、C(12)、D(13)、E(14)、F(15)放入HashMap中
- String[] overTen = {"A", "B", "C", "D", "E", "F"};
- HashMap<String, Integer> hashMap = new HashMap<>();
- for (int i = 0; i < 6; i++) {
- hashMap.put(overTen[i], i + 10);
- }
-
- //取出hashMap中键的集合
- Set<String> keySet = hashMap.keySet();
-
- //循环判断
- for (int i = 0; i < hex.length(); i++) {
- //判断数字部分
- if (hex.charAt(i) >= 48 && hex.charAt(i) <= 57) {
- dec += (hex.charAt(i) - 48) * Math.pow(16, hex.length() - 1 - i);
- } else {
- //判断字母部分
- for (String s : keySet) { //对键的集合进行遍历
- if ((hex.charAt(i) + "").equals(s)) { //判断找出相匹配的键
- Integer value = hashMap.get(s); //根据键找出相对应的值
- dec += value * Math.pow(16, hex.length() - 1 - i); //类加求和
- }
- }
- }
- }
- System.out.println(hex + "转换为十进制的结果为:" + dec);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。