java 任意进制转换
2017-07-22 18:10
190 查看
一、十进制是一种特殊的数制。
二、其他进制转十进制(java)
java的基类(Long, Integer, Short)中都提供提供有静态方法将其他进制转十进制:
方法:valueOf(String s, int radix); // 将 radix 进制的数 s 转换为十进制。
Long.valueOf("10A",15); //十五进制的的数‘10A’ 转换为十进制数; 结果:235
三、十进制转其他进制
1. java的基类(Long, Integer)中都提供提供有静态方法将十进制转为二、八、十六进制:
转二进制:toBinaryString(i);
转八进制:toOctalString(i);
转十六进制:toHexString(i);
2. 十进制转其他进制:
注释0:radix 为偶数,不会出问题(eg: TenTransToN(Long.MAX_VALUE, 14));
radix 为奇数,被转换的数太大,结果会是错误的(eg:(eg: TenTransToN(Long.MAX_VALUE, 15)))。
注释1:Math.pow 的参数和返回值是double类型,数据太大时 会用科学计数法表示出现误差。
二、其他进制转十进制(java)
java的基类(Long, Integer, Short)中都提供提供有静态方法将其他进制转十进制:
方法:valueOf(String s, int radix); // 将 radix 进制的数 s 转换为十进制。
Long.valueOf("10A",15); //十五进制的的数‘10A’ 转换为十进制数; 结果:235
三、十进制转其他进制
1. java的基类(Long, Integer)中都提供提供有静态方法将十进制转为二、八、十六进制:
转二进制:toBinaryString(i);
转八进制:toOctalString(i);
转十六进制:toHexString(i);
2. 十进制转其他进制:
/**十进制 转换成 N 进制 * @param val 十进制数据 * @param radix 进制 * @return 结果 */ static String TenTransToN(long val, int radix){ long temp = val; int len = 1; //目标进制的字符串长度 while(temp >= radix){ temp = temp/radix; len++; } char[] buf = new char[len]; formatLong(buf, val, radix, len); return new String(buf); } static void formatLong(char[] buf, long val, int radix, int len){ long temp; long radixPow; int charPos = len; --len; while(charPos != 0){ //Math.pow 方法某些数据较大时得不到正确的值。 如:Math.pow(15, 14) 结果的个位不是5. 见注释1 radixPow = (long) Math.pow(radix, --charPos); temp = val; if(val >= radixPow){ val = temp % radixPow; buf[len - charPos] = digits[(int) (temp / radixPow)]; }else{ buf[len - charPos] = '0'; } } } static char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' };
注释0:radix 为偶数,不会出问题(eg: TenTransToN(Long.MAX_VALUE, 14));
radix 为奇数,被转换的数太大,结果会是错误的(eg:(eg: TenTransToN(Long.MAX_VALUE, 15)))。
注释1:Math.pow 的参数和返回值是double类型,数据太大时 会用科学计数法表示出现误差。
相关文章推荐
- java 任意进制转换
- java任意进制转换
- Java实现任意进制转换
- 计算任意一个图生成树的个数——Kirchhoff 的Matrix Tree 方法Java实现
- Java基础(五):Java实现图片无损任意角度旋转
- java产生任意范围内不重复的随机数
- JAVA 计算地球上任意两点(经纬度)距离
- 什么是序列化?一句话:就是将java对象固化成文件存起来,这样就java对象就被固话了,可以任意的存储和网络传输了,而java对象是暂时存在内存里的,是没办法传输的,因为是虚拟的,并不是实实在在的文件
- Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换
- java进制转换
- Java——动态加载任意目录下的架包
- php版任意进制转换
- Java重修之路(二)第一个程序分析,注释,关键字,标识符,常量,进制转换,类型转换
- java利用反射扩展任意数组的方法
- 转帖:c#任意进制转换(2-36进制之间的转换)
- java 任意花朵数算法
- 【java工具类】【图片处理】从一整张图上加载任意一小块区域的图片
- java生成任意随机值,字符,数字,其它的都有你来
- 【Java 进制转换】POJ - 2305 Basic remains
- 华为机试(字符串间隔,进制转换,质数因子)Java