文档章节

Java中int的各进制之间的转换

pricker
 pricker
发布于 2015/08/23 20:29
字数 368
阅读 4341
收藏 6

一、二、八、十、十六进制之间的转换

int n1 = 14;
//十进制转成十六进制:
Integer.toHexString(n1);
//十进制转成八进制
Integer.toOctalString(n1);
//十进制转成二进制
Integer.toBinaryString(12);

//十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
//十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));

//八进制转成十进制
Integer.valueOf("576",8).toString();
//八进制转成二进制
Integer.toBinaryString(Integer.valueOf("23",8));
//八进制转成十六进制
Integer.toHexString(Integer.valueOf("23",8));


//二进制转十进制
Integer.valueOf("0101",2).toString();
//二进制转八进制
Integer.toOctalString(Integer.parseInt("0101", 2));
//二进制转十六进制
Integer.toHexString(Integer.parseInt("0101", 2));

 

可以看到其他进制之间相互转换,是先转为10进制,然后再转。

二、十进制转任意进制(2-16);


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>();
boolean isMinus = false;//判断输入的数是不是负数
        if(numStr.charAt(0)=='-'){
          num = Integer.valueOf(numStr.substring(1));
          isMinus = true;
        }
while(num != 0){  
            s.push(digths.charAt(num%base));  
            num/=base;  
        }  
       if(isMinus)
str.append("-");
while(!s.isEmpty()){  
            str.append(s.pop());  
        }  
        return str.toString();  
    }



三、16内任意进制间转换
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);  
    }



© 著作权归作者所有

下一篇: 汉字内码
pricker
粉丝 7
博文 56
码字总数 33145
作品 0
渭南
私信 提问
Java I/O : Java中的进制详解

作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。 一、引子 在Java世界里,99%的工作都是处理这高层。那么二进制,字节...

泥沙砖瓦浆木匠
2015/06/14
454
0
Java拾遗:014 - 二进制、进制转换及位运算

二进制 二进制是计算机中广泛采用的一种数制,由0和1组成,进位规则为“逢二进一”,如:0001表示十进制中的1,0010表示十进制中的2。二进制拥有大量非学有用的特性,详情参考:百度百科:二...

一别丶经年
2018/08/02
98
0
java 中 16 进制 HEX 转换成字节码形式的 UTF-8

恩,又碰到个蛋疼的编码转换问题了:要把形如 xE9xBB 的字符串转成中文。。。 在python中我们直接 print "xE9xBBx84" 即可, 在shell中我们直接 echo $'xe9xbbx84' #echo -e 'xe9xbbx84'也行......

大数据之路
2013/02/01
7.5K
1
Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和...

毛朱
2013/12/09
4.5K
0
Java|从Integer和int的区别认识包装类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/darlingwood2013/article/details/96969339 Java|Integer和int 极客时...

叶晚林
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部