405. 數字轉換為十六進制數
給定一個整數,編寫一個算法將這個數轉換為十六進制數。對于負整數,我們通常使用 補碼運算 方法。
注意:
十六進制中所有字母(a-f)都必須是小寫。
十六進制字符串中不能包含多余的前導零。如果要轉化的數為0,那么以單個字符’0’來表示;對于其他情況,十六進制字符串中的第一個字符將不會是0字符。
給定的數確保在32位有符號整數范圍內。
不能使用任何由庫提供的將數字直接轉換或格式化為十六進制的方法。
示例 1:
輸入:
26
輸出:
“1a”
示例 2:
輸入:
-1
輸出:
“ffffffff”
解題思路
將32位的int類型,分為八組,每組4個位,分別將4位轉化為16進制數,并且消除全部的前導0
代碼
class Solution {public char toStr(int num){return num<10?(char)(num+'0'):(char)('a'+num-10);}public String toHex(int num) {StringBuilder sb=new StringBuilder();for(int i=0;i<8;i++){int pattern=15;pattern&=num;sb.append(toStr(pattern));num>>=4;}int i=0;sb.reverse();for(;i<sb.length();i++)if(sb.charAt(i)!='0')break;return i==sb.length()?"0":sb.substring(i);}
}