1.10進制轉16進制 2591轉化為16進制數: ... + x2*16^2 + x1*16^1 + x0*16^0 = 2591 同mod16得到: x0 = 2591 % 16 = 15 ---> x0 = 15 同除以16: ... + x2 * 16^1 + x1*16^0 = 161 再次同mod16: x1 = 1 同除以16: ... + x2 * 16^0 = 10 再次mod 16: x2 = 10 除以16: 右邊因式 = 0,計算結束 轉化后數字為:A1F 2.16進制轉10進制 16進制數A1F轉化為10進制計算方式: 10*16^2 + 1*16^1 + 15*16^0 = 2560 + 16 + 15 = 2591 寫代碼程序中,從高位到低位,每兩位都可以提取一個16計算,代碼如下:
public int titleToNumber(String s) { int lineNum = 0; for(int i = 0;i < s.length();i++){ int num = s.charAt(i) - '0'; if(s.charAt(i) > '9'){ num = s.charAt(i) - 'A'+ 10; } lineNum = lineNum * 16 + num; } return lineNum; }
3.excel列名稱計算(10進制轉26進制,思想同1) 需注意,excel列名稱計算,與普通的進制轉化不相同,是從1開始的,并且,也不是滿26進1,滿26依然是26(Z),27則變為AA(依然是從1開始) 代碼:
public String convertToTitle(int n) { StringBuilder strBuilder = new StringBuilder(); while(n != 0){ n--; int x = n % 26; strBuilder.insert(0,(char)('A' + x)); n = n / 26; } return strBuilder.toString(); }
4.10進制轉化為7進制
類似16進制轉化,代碼如下
public String convertToBase7(int num) { boolean flag = num < 0 ? true : false; String result = ""; num = Math.abs(num); do{ result = num%7+""+ result; num = num/7; }while(num != 0); if(flag) result = "-" + result; return result; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/116944.html
標籤:其他
