java 任意进制转换
来源:互联网 发布:长宏数据 编辑:程序博客网 时间:2024/05/16 13:53
一、十进制是一种特殊的数制。
二、其他进制转十进制(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. 见注释1radixPow = (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类型,数据太大时 会用科学计数法表示出现误差。阅读全文
0 0
- java任意进制转换
- java 任意进制转换
- Java实现任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换!!!
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意整数转换为任意进制
- JAVA 实现10进制转换任意进制
- java中十进制转换为任意进制
- Linux常用命令
- CSS之高度塌陷问题解决方案
- jenkins,maven--更新到Nexu私库
- 洛谷【P2734】 游戏 A Game
- Android显示系统设计框架介绍
- java 任意进制转换
- intellij idea15 Java web项目部署(非maven)
- 单例模式的常见应用场景
- 文件压缩
- POJ分类很好很有层次感
- QT入门_地图
- c++ 拷贝构造函数中形参对象可以直接访问private变量
- Central Europe Regional Contest 2014 B [Gym
- Win下使用Eclipse开发scala程序配置(基于Hadoop2.7.3集群)