两种方法实现10进制和62进制互转
来源:互联网 发布:长治知豆电动汽车地址 编辑:程序博客网 时间:2024/05/17 03:37
[java] view plaincopyprint?
</pre><p></p><div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><strong>[java]</strong> <a target=_blank title="view plain" class="ViewSource" href="http://blog.csdn.net/zoeice/article/details/9713699#">view plain</a><a target=_blank title="copy" class="CopyToClipboard" href="http://blog.csdn.net/zoeice/article/details/9713699#">copy</a><a target=_blank title="print" class="PrintSource" href="http://blog.csdn.net/zoeice/article/details/9713699#">print</a><a target=_blank title="?" class="About" href="http://blog.csdn.net/zoeice/article/details/9713699#">?</a></div></div><ol class="dp-j"><li class="alt"><span><span class="keyword">import</span><span> java.util.Stack; </span></span></li><li><span> </span></li><li class="alt"><span> </span></li><li><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> Test { </span></span></li><li class="alt"><span><span class="keyword">private</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">char</span><span>[] charSet = </span><span class="string">"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"</span><span>.toCharArray(); </span></span></li><li><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li><span><span class="comment"> * 将10进制转化为62进制 </span> </span></li><li class="alt"><span><span class="comment"> * @param number </span> </span></li><li><span><span class="comment"> * @param length 转化成的62进制长度,不足length长度的话高位补0,否则不改变什么</span> </span></li><li class="alt"><span><span class="comment"> * @return</span> </span></li><li><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> String _10_to_62(</span><span class="keyword">long</span><span> number, </span><span class="keyword">int</span><span> length){ </span></span></li><li><span> Long rest=number; </span></li><li class="alt"><span> Stack<Character> stack=<span class="keyword">new</span><span> Stack<Character>(); </span></span></li><li><span> StringBuilder result=<span class="keyword">new</span><span> StringBuilder(</span><span class="number">0</span><span>); </span></span></li><li class="alt"><span> <span class="keyword">while</span><span>(rest!=</span><span class="number">0</span><span>){ </span></span></li><li><span> stack.add(charSet[<span class="keyword">new</span><span> Long((rest-(rest/</span><span class="number">62</span><span>)*</span><span class="number">62</span><span>)).intValue()]); </span></span></li><li class="alt"><span> rest=rest/<span class="number">62</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">for</span><span>(;!stack.isEmpty();){ </span></span></li><li><span> result.append(stack.pop()); </span></li><li class="alt"><span> } </span></li><li><span> <span class="keyword">int</span><span> result_length = result.length(); </span></span></li><li class="alt"><span> StringBuilder temp0 = <span class="keyword">new</span><span> StringBuilder(); </span></span></li><li><span> <span class="keyword">for</span><span>(</span><span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; i < length - result_length; i++){ </span></span></li><li class="alt"><span> temp0.append(<span class="string">'0'</span><span>); </span></span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> <span class="keyword">return</span><span> temp0.toString() + result.toString(); </span></span></li><li class="alt"><span> </span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li><span><span class="comment"> * 将62进制转换成10进制数</span> </span></li><li class="alt"><span><span class="comment"> * </span> </span></li><li><span><span class="comment"> * @param ident62</span> </span></li><li class="alt"><span><span class="comment"> * @return</span> </span></li><li><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> </span><span class="keyword">static</span><span> String convertBase62ToDecimal( String ident62 ) { </span></span></li><li><span> <span class="keyword">int</span><span> decimal = </span><span class="number">0</span><span>; </span></span></li><li class="alt"><span> <span class="keyword">int</span><span> base = </span><span class="number">62</span><span>; </span></span></li><li><span> <span class="keyword">int</span><span> keisu = </span><span class="number">0</span><span>; </span></span></li><li class="alt"><span> <span class="keyword">int</span><span> cnt = </span><span class="number">0</span><span>; </span></span></li><li><span> </span></li><li class="alt"><span> <span class="keyword">byte</span><span> ident[] = ident62.getBytes(); </span></span></li><li><span> <span class="keyword">for</span><span> ( </span><span class="keyword">int</span><span> i = ident.length - </span><span class="number">1</span><span>; i >= </span><span class="number">0</span><span>; i-- ) { </span></span></li><li class="alt"><span> <span class="keyword">int</span><span> num = </span><span class="number">0</span><span>; </span></span></li><li><span> <span class="keyword">if</span><span> ( ident[i] > </span><span class="number">48</span><span> && ident[i] <= </span><span class="number">57</span><span> ) { </span></span></li><li class="alt"><span> num = ident[i] - <span class="number">48</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> ( ident[i] >= </span><span class="number">65</span><span> && ident[i] <= </span><span class="number">90</span><span> ) { </span></span></li><li><span> num = ident[i] - <span class="number">65</span><span> + </span><span class="number">10</span><span>; </span></span></li><li class="alt"><span> } </span></li><li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> ( ident[i] >= </span><span class="number">97</span><span> && ident[i] <= </span><span class="number">122</span><span> ) { </span></span></li><li class="alt"><span> num = ident[i] - <span class="number">97</span><span> + </span><span class="number">10</span><span> + </span><span class="number">26</span><span>; </span></span></li><li><span> } </span></li><li class="alt"><span> keisu = (<span class="keyword">int</span><span>) java.lang.Math.pow( (</span><span class="keyword">double</span><span>) base, (</span><span class="keyword">double</span><span>) cnt ); </span></span></li><li><span> decimal += num * keisu; </span></li><li class="alt"><span> cnt++; </span></li><li><span> } </span></li><li class="alt"><span> <span class="keyword">return</span><span> String.format( </span><span class="string">"%08d"</span><span>, decimal ); </span></span></li><li><span> } </span></li><li class="alt"><span> </span></li><li><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * @param args</span> </span></li><li><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li><span> <span class="comment">// TODO Auto-generated method stub</span><span> </span></span></li><li class="alt"><span> System.out.println(<span class="string">"62System="</span><span> +_10_to_62(Integer.parseInt(</span><span class="string">"35174605"</span><span>), </span><span class="number">5</span><span>)); </span></span></li><li><span> System.out.println(<span class="string">"10System="</span><span> +convertBase62ToDecimal(</span><span class="string">"2NaWL"</span><span>)); </span></span></li><li class="alt"><span> } </span></li><li><span> </span></li><li class="alt"><span> </span></li><li><span>} </span></li></ol></div><pre class="java" style="display: none;" name="code">import java.util.Stack;public class Test {private static char[] charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); /** * 将10进制转化为62进制 * @param number * @param length 转化成的62进制长度,不足length长度的话高位补0,否则不改变什么 * @return */public static String _10_to_62(long number, int length){ Long rest=number; Stack<Character> stack=new Stack<Character>(); StringBuilder result=new StringBuilder(0); while(rest!=0){ stack.add(charSet[new Long((rest-(rest/62)*62)).intValue()]); rest=rest/62; } for(;!stack.isEmpty();){ result.append(stack.pop()); } int result_length = result.length(); StringBuilder temp0 = new StringBuilder(); for(int i = 0; i < length - result_length; i++){ temp0.append('0'); } return temp0.toString() + result.toString();}/** * 将62进制转换成10进制数 * * @param ident62 * @return */private static String convertBase62ToDecimal( String ident62 ) {int decimal = 0;int base = 62;int keisu = 0;int cnt = 0;byte ident[] = ident62.getBytes();for ( int i = ident.length - 1; i >= 0; i-- ) {int num = 0;if ( ident[i] > 48 && ident[i] <= 57 ) {num = ident[i] - 48;}else if ( ident[i] >= 65 && ident[i] <= 90 ) {num = ident[i] - 65 + 10;}else if ( ident[i] >= 97 && ident[i] <= 122 ) {num = ident[i] - 97 + 10 + 26;}keisu = (int) java.lang.Math.pow( (double) base, (double) cnt );decimal += num * keisu;cnt++;}return String.format( "%08d", decimal );}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("62System=" +_10_to_62(Integer.parseInt("35174605"), 5));System.out.println("10System=" +convertBase62ToDecimal("2NaWL"));}}
运行结果:
62System=2NaWL
10System=35174605
两种方法均转化成功
0 0
- 两种方法实现10进制和62进制互转
- 两种方法实现10进制和62进制互转
- 两种方法实现10进制和62进制互转
- 线程的两种实现方法 和 进程的两种实现方法 。
- 进制转换的一种思路两种实现方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- 数组遍历的两种方法和hash的实现
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- android多种方式通过URI调用本地百度地图
- 灰度发布
- 兔子--Edittext的android:inputType的属性值的含义
- ADO GetCollect(“FILE”)时catch到 Idispatch error #3105
- sencha中launch以及之前的活动
- 两种方法实现10进制和62进制互转
- Linux下安装Oracle11g服务器
- 关于后盾网yii框架的学习小结(2)--创建控制器,视图,布局等
- Xcode的archive菜单选项是灰色的
- linux 下socket编程 一对一阻塞通信
- 金融数据采集
- VS中使用“附加到进程”进行调试的方法
- 关于后盾网yii框架的学习小结(3)--asset,创建布局,在html中加载css
- mina 自定义包的解析