好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java之实现十进制与十六进制转换案例讲解

写了两种十六进制转十进制的方式,仅供参考。
基本思路:用十六进制中每一位数乘以对应的权值,再求和就是对应的十进制

方法一:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

 

public class Test {

     /**

      * @param: [content]

      * @return: int

      * @description: 十六进制转十进制

      */

     public static int covert(String content){

         int number= 0 ;

         String [] HighLetter = { "A" , "B" , "C" , "D" , "E" , "F" };

         Map<String,Integer> map = new HashMap<>();

         for ( int i = 0 ;i <= 9 ;i++){

             map.put(i+ "" ,i);

         }

         for ( int j= 10 ;j<HighLetter.length+ 10 ;j++){

             map.put(HighLetter[j- 10 ],j);

         }

         String[]str = new String[content.length()];

         for ( int i = 0 ; i < str.length; i++){

             str[i] = content.substring(i,i+ 1 );

         }

         for ( int i = 0 ; i < str.length; i++){

             number += map.get(str[i])*Math.pow( 16 ,str.length- 1 -i);

         }

         return number;

     }

     //测试程序

     public static void main(String... args) {

         Scanner input = new Scanner(System.in);

         String content = input.nextLine();

         if (!content.matches( "[0-9a-fA-F]*" )){

             System.out.println( "输入不匹配" );

             System.exit(- 1 );

         }

         //将全部的小写转化为大写

         content = content.toUpperCase();

         System.out.println(covert(content));

     }

 

}

利用了Map中键值对应的关系

方法二:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

import java.util.Scanner;

 

public class Test2 {

     /**

      * @param: [hex]

      * @return: int

      * @description: 按位计算,位值乘权重

      */

     public static int   hexToDecimal(String hex){

         int outcome = 0 ;

         for ( int i = 0 ; i < hex.length(); i++){

             char hexChar = hex.charAt(i);

             outcome = outcome * 16 + charToDecimal(hexChar);

         }

         return outcome;

     }

     /**

      * @param: [c]

      * @return: int

      * @description:将字符转化为数字

      */

     public static int charToDecimal( char c){

         if (c >= 'A' && c <= 'F' )

             return 10 + c - 'A' ;

         else

             return c - '0' ;

     }

     //测试程序

     public static void main(String... args) {

         Scanner input = new Scanner(System.in);

         String content = input.nextLine();

         if (!content.matches( "[0-9a-fA-F]*" )){

             System.out.println( "输入不匹配" );

             System.exit(- 1 );

         }

         //将全部的小写转化为大写

         content = content.toUpperCase();

         System.out.println(hexToDecimal(content));

 

     }

}

方法二利用了字符的ASCII码和数字的对应关系

到此这篇关于Java之实现十进制与十六进制转换案例讲解的文章就介绍到这了,更多相关Java之实现十进制与十六进制转换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://blog.csdn.net/iczfy585/article/details/92436181

查看更多关于Java之实现十进制与十六进制转换案例讲解的详细内容...

  阅读:18次