我正在寻找一种将二进制数转换为十六进制数(JAVA)的方法。问题是它不能用预定义的方法完成,我只是不知道该怎么做。我已经尝试了一些东西,但它让我失去了六位小数包括字符。
提前感谢!
答案 0 :(得分:1)
这真是一个糟糕的问题。你应该解释你的想法并展示你迄今为止尝试过的代码。
所以这里是二进制数:
0101111010110010
将其分成四位组(一位是二进制数字,即1或0):
0101 1110 1011 0010
现在有趣的是,每组四位的最大值为....
1111 = 8 + 4 + 2 + 1 = 15
那是响铃吗?这是'数字'在hexadecimal中:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A, B, C, D, E, F
单个十六进制数字的最大值是什么?
15
这意味着您可以简单地将每组四位转换为十六进制数字:
0101 1110 1011 0010
4+1 8+4+2 8+2+1 2
5 14 11 2
5 E B 2
5EB2
答案 1 :(得分:0)
这里的确切问题是什么?
使用Integer.toHexString(num)转换
答案 2 :(得分:0)
首先,对于您的要求,您必须将二进制no转换为十进制,然后转换为十六进制。所以请尝试这个程序,它可以按照你的要求工作:
import java.util.Scanner;
public class BinaryToHexa
{
public static void main(String args[])
{
int binnum, rem;
String hexdecnum="";
int decnum=0;
char hex[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
Scanner scan = new Scanner(System.in);
System.out.print("Enter Binary Number : ");
binnum = scan.nextInt();
// converting the number in decimal format
int i=0;
while(binnum>0)
{
rem = binnum%10;
binnum=binnum/10;
decnum = decnum + (int)(rem*Math.pow(2,i));
i++;
}
// converting the number in hexadecimal format
while(decnum>0)
{
rem = decnum%16;
hexdecnum = hex[rem] + hexdecnum;
decnum = decnum/16;
}
System.out.print("Equivalent Hexadecimal Value is :\n");
System.out.print(hexdecnum);
}
}
如果您有任何疑问,请告诉我。
...谢谢
答案 3 :(得分:0)
从我的图书馆中试用此功能。您不使用此功能进行任何计算。只有字符串比较,您可以根据需要将二进制转换为十六进制。只要限制一个字符串可以有多长。
// "Copyright Notice", please do not remove.
// Written by Kevin Ng
// The full tutorial on this subject can be found @ http://kevinhng86.iblog.website or http://programming.world.edu.
// This source code file is a part of Kevin Ng's Z library.
// This source code is licensed under CCDL-1.0 A copy of CDDL1.0 can be found at https://opensource.org/licenses/CDDL-1.0
public static String binhexZ(String input)
{
String map = "0000,0,0001,1,0010,2,0011,3,0100,4,0101,5,0110,6,0111,7,1000,8,1001,9,1010,A,1011,B,1100,C,1101,D,1110,E,1111,F";
String output = "";
int i = 0;
while (input.length() % 4 != 0){
input = "0" + input;
}
while (i < input.length()){
output += map.charAt(map.indexOf(input.substring(i, i + 4)) + 5);
i = i + 4;
}
output = output.replaceAll("^0+", "");
output = output.length() < 1? "0" : output;
return output;
}