
如果您不必自己实现该转换,则可以使用现有代码:
int decimal = Integer.parseInt(binaryStr,2);String hexStr = Integer.toString(decimal,16);
如果必须自己实现,则代码中存在几个问题:
- 循环应从0迭代到binary.length()-1(假定String的第一个字符代表最高有效位)。
- 您隐式地假设您的二进制字符串对于某些整数x具有4 * x个字符。如果不正确,则算法将中断。您应该用零填充String以获得这样长度的字符串。
sum
输出的每个十六进制数字后必须将其重置为0。System.out.print(digitNumber);
-在这里您应该打印sum
,而不是digitNumber
。
这是大多数固定代码的外观:
int digitNumber = 1; int sum = 0; String binary = "011110101010"; for(int i = 0; i < binary.length(); i++){ if(digitNumber == 1) sum+=Integer.parseInt(binary.charAt(i) + "")*8; else if(digitNumber == 2) sum+=Integer.parseInt(binary.charAt(i) + "")*4; else if(digitNumber == 3) sum+=Integer.parseInt(binary.charAt(i) + "")*2; else if(digitNumber == 4 || i < binary.length()+1){ sum+=Integer.parseInt(binary.charAt(i) + "")*1; digitNumber = 0; if(sum < 10) System.out.print(sum); else if(sum == 10) System.out.print("A"); else if(sum == 11) System.out.print("B"); else if(sum == 12) System.out.print("C"); else if(sum == 13) System.out.print("D"); else if(sum == 14) System.out.print("E"); else if(sum == 15) System.out.print("F"); sum=0; } digitNumber++; }输出:
7AA
仅当二进制数字的数量可被4整除时,此方法才起作用,因此您必须添加左
0填充作为预备步骤。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)