java实现任意进制的互相转换
2015-06-12 12:08
645 查看
首先声明此工具类是借鉴前辈的代码写的,工具类主要用于项目中需要生成一个key id,包括日期时间和mac,又要尽可可能数据量小并具有可读性,可能我选为0-9,A-Z和几个符号搭配成42进制,具体代码如下, 你亦可能改变code_string,改为自己想要的代码,就可能实现简单的数据加密了...
package com.freestyle.utils; import java.util.Stack; /**** * 数字工具,进行42以下的任意进制转换 * @author dgmislrh */ public class NumericalUtil { private static final String C_CODES_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$.`"; /*** * 将10进制转换为42进制 * @param intVal * @return */ public static String int2CodeString(int intVal) { return int2CodeString(intVal, C_CODES_STRING.length()); } /*** * 将10进制转换为任意进制 * @param intVal * @param base <=42 * @return */ public static String int2CodeString(long intVal,int base) { int w_code_len = C_CODES_STRING.length(); if (base >w_code_len){ return null; } StringBuilder sb = new StringBuilder(); Stack<String> s=new Stack<String>(); while (intVal!=0){ s.push(C_CODES_STRING.charAt((int)(intVal%base))+""); intVal/=base; } while (!s.empty()){ sb.append(s.pop()); } return sb.length()==0?"0":sb.toString(); } /*** * 任何进制转换, * @param s * @param srcBase s的进制 * @param destBase 要转换为的进制 * @return */ public static String BaseConvert(String s,int srcBase,int destBase){ if(srcBase == destBase){ return s; } char[] chars = s.toCharArray(); int len = chars.length; if(destBase != 10){//目标进制不是十进制 先转化为十进制 s = BaseConvert(s,srcBase,10); }else{ long n = 0; for(int i = len - 1; i >=0; i--){ n+=C_CODES_STRING.indexOf(chars[i])*Math.pow(srcBase, len - i - 1); } return String.valueOf(n); } return int2CodeString(Integer.valueOf(s),destBase); } }
相关文章推荐
- Spring mvc+hibernate+freemarker(开源项目)
- Java项目如何记录日志
- Android项目使用Eclipse进行单元测试
- Java代理与动态代理
- java正则表达式处理HTML标签
- 在eclipse、myeclipse中快速安装svn组件
- java解析xml字符串(用dom4j) (转载)
- java 用BASE64 进行加密 解密
- Java_解决java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
- Java并发框架Executor学习笔记
- struts2利用xwork进行校验时,报错ognl.NoSuchPropertyException
- java中的多态
- java客户端调用webservice
- javabean总结
- quartz CronExpression表达式
- Java源码分析之HashMap
- Java中字符串比较时==和equals的区别
- java中判断数字带小数点后取两位
- MyEclipse设置默认注释的格式
- 解决android eclipse导入项目时buildpath异常