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

网友投稿 285 2022-12-20

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

写了两种十六进制转十进制的方式,仅供参考。

基本思路:用十六进制中每一位数乘以对应的权值,再求和就是对应的十进制

方法一:

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 map = new HashMap<>();

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

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

}

for(int j= 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中键值对应的关系

方法二:

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码和数字的对应关系

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中键值对应的关系

方法二:

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码和数字的对应关系

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用spring boot 整合kafka,延迟启动消费者
下一篇:Java面试题冲刺第二十天
相关文章

 发表评论

暂时没有评论,来抢沙发吧~