十進位轉換成二進位、八進位、十六進位的通用方法

來源:互聯網
上載者:User
/** * 將十進位轉換成二進位、八進位、十六進位 * 說明: * 1)、在JAVA語言一個整數用4個八位表示,即32個二進位位 * 2)、一個二進位位用0和1表示,最大值是1 * 3)、一個八進位位表示3個二進位位,最大值是7 * 4)、一個十六進位位表示4個二進位位,最大值是15 * */public class DecimalConvert {public static void main(String[] args) {int num = 60;System.out.println(num + "轉換成二進位=" + toBinaryString(num));System.out.println(num + "轉換成八進位=" + toOctalString(num));System.out.println(num + "轉換成十六進位=" + toHexString(num));}/** * 十進位轉成二進位 * @param num 要轉換成二進位的整數 * @return 轉成二進位後的字串 */public static String toBinaryString(int num) {return trans(num, 1, 1);}/** * 十進位轉成八進位 * @param num 要轉換成八進位的整數 * @return 轉成八進位後的字串 */public static String toOctalString(int num) {return trans(num, 7, 3);}/** * 十進位轉成十六進位 * @param num 要轉換成十六進位的整數 * @return 轉成十六進位後的字串 */public static String toHexString(int num) {return trans(num, 15, 4);}/** * 進位公用計算方法,提取進位轉換相同的代碼 * @param num 要轉換的整數 * @param base 要轉換的進位基數,如果是二進位:base=1; 如果是8進位:base=7; 如果是16進位:base=15 * @param offset 右移位元,由轉換的進位類型決定。二進位位移1位,8進位位移3位,16進位位移4位 * @return 轉成進位後的字串 */private static String trans(int num, int base, int offset) {if (num == 0) return ""; StringBuffer result = new StringBuffer();//儲存二進位、八進位、十六進位的字元表char[] chs = new char[] {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[32];//JAVA中int用4個二進位八位表示,即32個二進位位,所以儲存的值最大不會超過32位int pos = arr.length;//儲存進位值的指標//開始計算,直到有效位為0才停止計算while(num != 0) {//與(&)上轉換進位有效位的最大值,如果在16進位中,一個十六進位位表示4個二進位位,4個二進位位的最大值是15,所以這裡的base就是15int temp = num & base;//從最大下標位開始儲存,方便取出拼接。temp的值在0-15之間,所以直接將與後的值從字元表中取出來得到相應的進位值arr[--pos] = chs[temp];//無符號右移,如果是16進位,則右移4位,因為一個十六進位位表示4個二進位位,所以這裡的offset就是4num = num >>> offset;}//將計算後的值拼接成相應的進位表示方式,由於是反著儲存的,所以要從最後儲存的指標位置開始取才能保證表現的進位數是正確的for (int i = pos; i < arr.length; i++) {result.append(arr[i]);}return result.toString();}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.