package com.byd.core; import java.text.DecimalFormat; import java.util.Scanner; import java.util.Stack; public class NumberUtils { /** * 将指点的数字对象按照指点的规则格式化, 例如:###.00, * @param format String 格式 * @param obj Double 需转换的Double类型数据 * @return 格式化后的字符串 */ public static String format(String format, double obj) { DecimalFormat formater = new DecimalFormat(format); return formater.format(obj); } /** * 将指点的数字对象按照指点的规则格式化, 例如:###.00, * @param format String * @param obj Float 需转换的Float类型数据 * @return 格式化后的字符串 */ public static String format(String format, float obj) { DecimalFormat formater = new DecimalFormat(format); return formater.format(obj); } /** * 获取指定位数的随机数 * @param size int 位数 * @return 指定位数的随机数 long */ public static long getRandom(int size) { Double value = (Math.random() * Math.pow(10, size)); return value.longValue(); } /** * 判断是否为整数 * @param value * @return */ public static boolean isInteger(String value){ try { Integer.valueOf(value); return true; } catch (NumberFormatException e) { return false; } } /** * 判断是否为数字 * @param value * @return */ public static boolean isNumeric(String value){ try { Double.valueOf(value); return true; } catch (NumberFormatException e) { return false; } } public static Long createLong(String longValue){ Long result; try { result = Long.parseLong(longValue); } catch (NumberFormatException e){ return null; } return result; } public static Integer createInteger(String intValue){ Integer result; try { result = Integer.parseInt(intValue); } catch (NumberFormatException e){ return null; } return result; } public static Short createShort(String shortValue){ Short result; try { result = Short.parseShort(shortValue); } catch (NumberFormatException e){ return null; } return result; } public static String formatInteger(Integer integerValue, String defaultValue){ if (integerValue == null){ return defaultValue; } else{ return String.valueOf(integerValue); } } public static String formatLong(Long longValue, String defaultValue){ if (longValue == null){ return defaultValue; } else{ return String.valueOf(longValue); } } public static String formatShort(Short shortValue, String defaultValue){ if (shortValue == null){ return defaultValue; } else{ return String.valueOf(shortValue); } } /**16进制转10进制**/ public static Integer MD10(String value){ if(value == null){ return null; }else{ return Integer.parseInt(value,16); } } /**10进制转16进制**/ public static String MD16(Integer value){ return Integer.toHexString(value).toString(); } public static String baseNum(String num,int srcBase,int destBase){ if(srcBase == destBase){ return num; } String digths = "0123456789ABCDEF"; char[] chars = num.toCharArray(); int len = chars.length; if(destBase != 10){//目标进制不是十进制 先转化为十进制 num = baseNum(num,srcBase,10); }else{ int n = 0; for(int i = len - 1; i >=0; i--){ n+=digths.indexOf(chars[i])*Math.pow(srcBase, len - i - 1); } return n + ""; } return baseString(Integer.valueOf(num),destBase); } public static String baseString(int num,int base){ if(base > 16){ throw new RuntimeException("进制数超出范围,base<=16"); } StringBuffer str = new StringBuffer(""); String digths = "0123456789ABCDEF"; Stack<Character> s = new Stack<Character>(); while(num != 0){ s.push(digths.charAt(num%base)); num/=base; } while(!s.isEmpty()){ str.append(s.pop()); } return str.toString(); } public static String NumberToTen(int beforeConversion, String number) {// 其它进制转成十进制 double result = 0;// 声明转换后的数值 String subString; for (int i = 0; i < number.length(); i++) {// 根据字符串的长度循环获得单个元素 subString = number.substring(i, i + 1);// 将字符串按循环截取 if (beforeConversion == 16) {// 判断传入的是否是十六进制 subString = sixteenCharToNumber(subString);// 将字母转换成数字 } result += Integer.parseInt(subString)* Math.pow(beforeConversion, number.length() - i - 1);// 返回转换的结果 } //return (int) result; DecimalFormat df = new DecimalFormat("0"); return df.format(result); } public static String TenToNumber(int afterConversion, String number) {// 十进制转成其他进制 int current = Integer.parseInt(number);// 将字符串转换成整数 String opResult = ""; if (afterConversion == 16) {// 判断转换后的数制是否是16进制 while (current >= afterConversion) {// 判断传入的数是否大于16,大于则逢16进一 opResult += sixteenNumberToChar(current % afterConversion);// 将数字转换成字母 current /= afterConversion; } if (current != 0) opResult += sixteenNumberToChar(current);// 最终余数 } else { while (current >= afterConversion) {// 判断传入的值是否大于转换后的数制 opResult += current % afterConversion; current /= afterConversion; } if (current != 0) opResult += current;// 最终余数 } String riResult = "";// 倒序二进制字符串 for (int i = opResult.length() - 1; i >= 0; i--) {// 根据二进制的转换方式进行循环输出 riResult = riResult + opResult.substring(i, i + 1); } return riResult; } public static String TenToNumber(String num){ return Long.toHexString(Long.parseLong(num)).toUpperCase(); } public static String sixteenCharToNumber(String s) {// 十六进制字母对应数字 String num = ""; if (s.equals("A") || s.equals("a")) num = "10"; else if (s.equals("B") || s.equals("b")) num = "11"; else if (s.equals("C") || s.equals("c")) num = "12"; else if (s.equals("D") || s.equals("d")) num = "13"; else if (s.equals("E") || s.equals("E")) num = "14"; else if (s.equals("F") || s.equals("f")) num = "15"; else num = s; return num; } public static String sixteenNumberToChar(int num) {// 十六进制数字对应字母 String c = ""; if (num == 10) c = "A"; else if (num == 11) c = "B"; else if (num == 12) c = "C"; else if (num == 13) c = "D"; else if (num == 14) c = "E"; else if (num == 15) c = "F"; else c = String.valueOf(num); return c; } public static void main(String[] args) {// java程序的主入口处 String number;// 要转换的数 int beforeConversion, afterConversion;// 转换前的数制,转换后的数制 //Long temp1; String result = "";// 经过数制转换后的结果 String temp=""; //String stop = ""; Scanner read = new Scanner(System.in);// 得到用户输入的值 //Date date=new Date(); // System.out.println(date.toLocaleString()); //do { System.out.println("请输入三个参数(整数):待转换的数据 转换前的数制 转换后的数制"); number = read.next(); beforeConversion = read.nextInt(); afterConversion = read.nextInt(); // stop = "Q"; // } while (stop != "Q");// 跳出循环 try { if (beforeConversion != 10) {// 判断转换前的数制是否是十进制 temp = String.valueOf(NumberToTen(beforeConversion,number));// 获得转换成十进制的数 //result = String.valueOf(TenToNumber(afterConversion, temp));// 十进制转换成其它进制 System.out.println(beforeConversion + "进制的数:" + number + ",转换成" + afterConversion + "进制的数为:" + temp+"\n"); if(temp!=null){ Long t= Long.parseLong(temp); for(int i=0;i<10;i++){ t++; System.out.println(Long.toHexString(t).toUpperCase()); } } } else { //result = String.valueOf(TenToNumber(afterConversion, number));// 十进制转换成其它进制 result = TenToNumber(number); System.out.println("10进制数:"+number+",转换成16进制的数:"+result+"\n"); if(result!=null){ Long r = Long.parseLong(number); for(int i=0;i<10;i++){ r++; System.out.println(Long.toHexString(r).toUpperCase()); } } } //System.out.println(afterConversion + "进制的数:" + temp + ",转换成" // + beforeConversion + "进制的数为:" + Long.toHexString(Long.parseLong(temp)).toUpperCase()); }catch (Exception e) { System.out.print("转换失败,请输入合法数据!"); System.exit(-1);// 所有程序(方法,类等)停止,系统停止运行 } } }
<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
相关推荐
压缩包内的文件`进制转换update.c`可能包含了对原有代码的更新或改进,`进制转换toInt.c`可能是一个专门用于将其他进制转换成整数的函数,而`进制转换.c`则可能是整个进制转换功能的核心源文件。 在C语言中实现进制...
综上所述,"基于单片机(AT89C51)的进制转换及进制计算器"项目涵盖了单片机原理、进制转换算法、程序设计、硬件接口设计等多个方面的知识。通过这个项目,开发者不仅可以提升单片机编程技能,还能深入理解进制转换的...
辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 进制转换V2.1辅助软件 ...
《易语言模块完全进制转换》 易语言作为一款国内自主研发的编程语言,以其独特的“易”学特性,深受广大编程初学者和爱好者喜爱。在编程过程中,进制转换是一项基础且重要的技能,无论是十进制、二进制、八进制还是...
"微机原理进制转换程序设计" 本资源摘要信息是关于微机原理中进制转换程序设计的知识点总结。进制转换是计算机科学中一个非常重要的概念,涉及到不同数制之间的转换,如二进制、十进制、十六进制等。 1. 需求说明 ...
文档中虽然存在OCR扫描识别错误,但是可以推测出内容涉及了进制转换相关的关键字,比如“Decimal number”代表十进制数,“Hex”代表十六进制数,这些关键字都是进行进制转换时常用的术语。 文档提供的其他链接和...
进制转换是计算机科学中的基础概念,用于在不同的数值系统之间转换数字,常见的有二进制、八进制、十进制和十六进制。在编程和计算机操作中,理解和运用这些进制转换至关重要。 标题"各种进制转换工具精简版"指的是...
进制转换是计算机科学中的基础概念,用于在不同的数值系统之间转换数字。在这个场景中,我们讨论的是一个基于MFC(Microsoft Foundation Classes)框架编写的进制转换器应用。MFC是微软提供的一套C++类库,它使得...
计算机各种进制转换练习题 计算机中的进制转换是计算机科学和信息技术中的一种基本概念。它是指在不同进制系统之间进行数值表示的转换,例如十进制、 二进制、八进制、十六进制等。下面是计算机各种进制转换的练习...
在编程领域,进制转换是一项基础且重要的技能。在C#这种高级编程语言中,进行进制转换可以方便地处理二进制、八进制、十进制和十六进制等不同数字系统之间的数据交互。本项目是一个专门针对进制转换的小程序,旨在...
至于八进制到十六进制,我们需要先将八进制转换为十进制,然后将十进制转换为十六进制。在转换为十进制之后,我们可以使用`HEX`函数(在某些系统中可能为`CONVERT(VARBINARY, ..., 16)`)将数字转换为十六进制。例如...
了解并能够灵活运用ASCII码与十六进制转换对于IT专业人员来说是至关重要的。 ASCII码是基于拉丁字母的一套电脑编码系统,最初设计用于打字机,现在已经成为电子通信的标准之一。它包含了128个字符,包括英文大小写...
在C#编程环境中,Winform应用常常用于创建用户界面,而进制转换是计算机科学的基础概念,涉及到二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)之间的数值转换。下面将详细阐述如何...
"进制转换练习题及答案39资料.pdf" 本文档提供了39道进制转换练习题及答案,涵盖二进制、十进制、十六进制之间的转换,ASCII 码、汉字国标码、商品条形码等标准化编码的知识点。通过这些练习题,可以帮助学生和从业...
《魔兽争霸WAR3 JASS技能ID进制转换器详解及应用》 在魔兽争霸III(WAR3)的游戏世界中,地图编辑器与JASS(Just Another Scripting System)语言为玩家提供了无限的创意空间,让游戏爱好者能够自定义游戏规则、...
进制转换是计算机科学中的基础概念,涉及到二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)等不同数字系统间的转换。这些进制转换在编程、数据存储、硬件设计等多个IT领域都有广泛...
在IT领域,进制转换是一项基础且至关重要的技能,它涉及到计算机科学的多个方面,如数据存储、计算、编码和通信。本工具专注于二进制、八进制、十进制和十六进制之间的转换,这些是计算机系统中最常见的数字表示形式...
"计算机各种进制转换练习题" 计算机进制转换是计算机科学中的一种基本概念,指的是将不同进制的数字进行相互转换,如十进制、 二进制、八进制、十六进制等。这种转换在计算机科学和编程中有着广泛的应用。 在本...
Java实现的进制转换工具类完整示例 Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制...