Java基础知识强化106:Java中 int 的各进制之间的转换
2016-06-29 11:44
585 查看
1、二、八、十、十六进制之间的转换
下面是示例代码,我们直接通过JDK工具库中的方法实现的,如下:
参数为:
String s:要解析的字符串
int radix:解析s字符串的进制
程序运行效果,如下:
2、十进制转任意进制 [2-16] 和 任意进制间转换[2-16]
运行结果如下:
下面是示例代码,我们直接通过JDK工具库中的方法实现的,如下:
public static Integer valueOf(String s, int radix)
参数为:
String s:要解析的字符串
int radix:解析s字符串的进制
package com.himi.radix; /** * Java中如何实现十进制到其他进制的转换 * @author hebao * */ public class IntegerToOther { public static void main(String[] args) { int n = 14; //十进制转成十六进制: String n0 = Integer.toHexString(n); System.out.println("0x"+n0.toUpperCase()); //十进制转成八进制 String n1 = Integer.toOctalString(n); System.out.println(n1); //十进制转成二进制 String n2 = Integer.toBinaryString(12); System.out.println(n2); //十六进制转成十进制 String n3 = Integer.valueOf("FFFF",16).toString(); System.out.println(n3); //十六进制转成二进制 String n4 = Integer.toBinaryString(Integer.valueOf("FFFF",16)); System.out.println(n4); //十六进制转成八进制 String n5 = Integer.toOctalString(Integer.valueOf("FFFF",16)); System.out.println(n5); //八进制转成十进制 String n6 = Integer.valueOf("576",8).toString(); System.out.println(n6); //八进制转成二进制 String n7 = Integer.toBinaryString(Integer.valueOf("23",8)); System.out.println(n7); //八进制转成十六进制 String n8 = Integer.toHexString(Integer.valueOf("23",8)); System.out.println(n8); //二进制转十进制 String n9 = Integer.valueOf("010110101010",2).toString(); System.out.println(n9); //二进制转八进制 String n10 = Integer.toOctalString(Integer.parseInt("010110101010", 2)); System.out.println(n10); //二进制转十六进制 String n11 = Integer.toHexString(Integer.parseInt("010110101010", 2)).toUpperCase(); System.out.println("0x"+n11); } }
程序运行效果,如下:
2、十进制转任意进制 [2-16] 和 任意进制间转换[2-16]
package com.himi.code3; import java.util.Stack; public class TestDemo4 { public static void main(String[] args) { System.out.println("==============十进制 转化为 任意进制[2-16]=============="); System.out.println(transformation(255, 16)); System.out.println(transformation(254, 16)); System.out.println(transformation(1010, 9)); System.out.println(transformation(1010, 8)); System.out.println(transformation(255, 2)); System.out.println("==============任意进制间相互转换[2-16]=============="); System.out.println(baseNum("678", 16, 10)); System.out.println(baseNum("678", 9, 10)); System.out.println(baseNum("678", 9, 2)); } /** * 十进制[正整数] 转 任意进制 (2 ~ 16) * * @param num * 输入的十进制数 * @param base * 要转换成的进制 */ public static String transformation(int num, int base) { if (base > 16) { throw new RuntimeException("进制数超出范围,base<=16"); } if (num < 0) { throw new RuntimeException("输入数据不能小于0"); } 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(); } /** * 16内任意进制间转换 * * @param num * 输入的数据 * @param srcBase * 输入数据的进制 * @param destBase * 要转换成的进制 * @return */ public static String baseNum(String num, int srcBase, int destBase) { if (Integer.valueOf(num) < 0) { throw new RuntimeException("输入数据不能小于0"); } 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 transformation(Integer.valueOf(num), destBase); } }
运行结果如下:
相关文章推荐
- javaweb学习路之四--cxf发布Webservice
- Java验证码的jar制作
- java线程
- java sqlxml (有错误,sqlite3可能不支持xml类型)
- 获取java web项目里面所有的properties文件并组装在一起,使用方便,配置简单
- 《Thinkinginjava》第10章-内部类
- 《疯狂Java讲义(第3版)》.(李刚)——类和对象
- 【Spring应用级学习】AOP
- java-RandomAccessFile
- spring注解注入:<context:component-scan>
- Dijkstra算法练习
- Maven入门4- 安装定制库到Maven本地资源库
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之六:Hibernate的flush和clear
- JavaWeb会话Session知识大纲
- SpringMVC 乱码
- java观察者模式的实现
- 关于Java中String类的hashCode方法
- java连接mysql数据库批量的一点研究
- LogCat突然不显示
- 使用mybatis-spring,必须使用spring3.0 以上