二进制与十进制转换工具类
Posted xiejn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制与十进制转换工具类相关的知识,希望对你有一定的参考价值。
package util; /** * 二进制工具类 * * @author 谢辉 * @time 2020.07.01 * */ public class BinaryUtil { /** * 十进制数字转二进制 * * @param num 十进制数字 * @param strResult 结果容器,追加结果用, * @return 返回结果字符串 */ public static String DecimalToBinary(Integer num, StringBuilder strResult) { num = num < 0 ? 0 : num; Integer integer = num / 2;// 整除结果 Integer StrInteger = num % 2;// 取余结果 if (integer == 0) {// 表示1/2=0;商为0,不能再往下除了 strResult.append(StrInteger); } else { // 递归追加结果 strResult.append(StrInteger); DecimalToBinary(integer, strResult); } return new StringBuilder(strResult.toString()).reverse().toString(); } /** * 二进制转换十进制 * * @param binary 二进制字符串 * @return 转换的结果 * @throws NumberFormatException */ public static Integer BinaryToDecimal(String binary) throws NumberFormatException { char[] array = binary.toCharArray(); // 对传入的二进制字符串检测 for (int i = 0; i < array.length; i++) { if (array[i] != ‘0‘ && array[i] != ‘1‘) { throw new NumberFormatException("二进制只能有0或1!"); } } // 再次检测字符串,避免‘00010101’,转成‘10101’ int index = binary.indexOf("1") > 0 ? binary.indexOf("1") : 0; binary = array[0] == ‘0‘ ? binary.substring(index) : binary; // 规范二进制字符串后,开始计算结果 return compute(binary); } private static Integer compute(String binaryNum) { Integer decimalNum = 0; int parseInt = Integer.parseInt(binaryNum); if (parseInt == 1) { return 1; } else if (parseInt <= 0) { return 0; } else { char[] binaryArr = binaryNum.toCharArray(); decimalNum = binaryArr[1] == ‘0‘ ? 2 : 3; for (int i = 2; i < binaryArr.length; i++) { decimalNum = binaryArr[i] == ‘0‘ ? decimalNum * 2 : decimalNum * 2 + 1; } return decimalNum; } } /** * 测试功能 * * @param args */ public static void main(String[] args) { int num = 33; String string = DecimalToBinary(num, new StringBuilder()); System.out.println(num + "的二进制结果:" + string); Integer binaryToDecimal = BinaryToDecimal(string); System.out.println(string + "的十进制结果:" + binaryToDecimal); } }
以上是关于二进制与十进制转换工具类的主要内容,如果未能解决你的问题,请参考以下文章
ColorUtilColor工具类(color整型rgb数组16进制互相转换)
Silverlight 中的十进制转换器无法正确处理丢失焦点
android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错