java实现二进制转十六进制的方法_16进制转换成2进制

Java (3) 2024-06-08 17:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
java实现二进制转十六进制的方法_16进制转换成2进制,希望能够帮助你!!!。

题目链接:

百练OJ:2798

描述:输入一个2进制的数,要求输出该2进制数的16进制表示。在16进制的表示中,A-F表示10-15
输入:第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000
输出:n行,每行输出对应一个输入。

对于一个值比较小的二进制数转化为十六进制的数可以在java中直接调用函数解决,代码如下:

解题代码一:

import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner input =new Scanner(System.in); int n=input.nextInt(); while(n>0){ int k=input.nextInt(); int tem=Integer.parseInt(String.valueOf(k), 2); String str=Integer.toHexString(tem).toUpperCase(); System.out.println(str); n--; } input.close(); } }

但是,本题的输入二进制的位数很多,字符长度可达10000,超出了int型数的限制,于是,解题应更加复杂。

对于一个二进制的数每四位数可以转化为一个十六进制数,例如1111可转化为F; 0001转化为1 ;1000转化为8;转化为EA。对于一个二进制的数位数若不是4的倍数,可以在前面补零,补成4的倍数位。例如:补为为00转化为十六进制:3DF

解题代码二:

import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner input =new Scanner(System.in); int n=input.nextInt(); while(n>0){ String k=input.next(); System.out.println(turn2to16(k)); n--; } input.close(); } private static String turn2to16(String str) { String sum=""; int t=str.length()%4; if(t!=0){ for(int i=str.length();i-4>=0;i=i-4){ String s=str.substring(i-4,i); int tem=Integer.parseInt(String.valueOf(s), 2); sum=Integer.toHexString(tem).toUpperCase()+sum; } String st=str.substring(0,t); int tem=Integer.parseInt(String.valueOf(st), 2); sum=Integer.toHexString(tem).toUpperCase()+sum; } else{ for(int i=str.length();i-4>=-1;i=i-4){ String s=str.substring(i-4,i); int tem=Integer.parseInt(String.valueOf(s), 2); sum=Integer.toHexString(tem).toUpperCase()+sum; } } return sum; } }

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复