java实现“进制转换-在线工具”
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                java实现“进制转换-在线工具”
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                在實際的開發過程中遇到過這樣一個問題:網絡的數據傳輸,為了數據量的小,會把幾個字段拼在一起合并成幾個字節。 
 比如我遇到的是,時標合并:日、時、分、秒,這四個字段要求在傳輸的過程中占3個字節,也就是每個字段占了6位。 
 我在開發的過程中是先把每一個字段值轉成二進制數,位數不夠的高位補0,因為設計的時候就已經考慮到,在特殊字段轉換中不會超過6位。60—–>111100。 
 最后我把所有的都拼接成了一個字符串:“010100001101111001011001”,這樣的一個24位。3字節數據。然后就需要將這個字符串轉成想要的byte數據。做到這突然不知道該怎么做了。然后*大家都知道有一個“進制轉換-在線工具”,好奇他的底層代碼是怎么實現,SO~~~~
重點代碼:任意進制之間的轉換(不是啦~~~)
package test;import java.util.Stack; /**** * 數字工具,進行42以下的任意進制轉換 * @author wp*/ public class NumericalUtil { private static final String C_CODES_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$.`"; /*** * 將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); }public static void main(String[] args) { // String str=BaseConvert("010100001101111001011001",2,16);String str=BaseConvert("20",10,16);System.out.println(str);}}總結
以上是生活随笔為你收集整理的java实现“进制转换-在线工具”的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 在.NET中进行AutoCAD二次开发(
 - 下一篇: 如何防止恶意举报