LeetCode十進位制數轉十六進位制數Swift
阿新 • • 發佈:2021-01-12
注意:給定的數確保在32位有符號整數範圍內。
示例 1:
輸入: 26 輸出: "1a"
示例 2:
輸入: -1 輸出: "ffffffff"
思路:
class Solution { func toHex(_ num: Int) -> String { var num = num var resnum = 0 let hex = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"] var res = "" ifnum == 0 { return "0" } while num != 0 && resnum < 8 { res = hex[num & 15] + res num >>= 4 resnum += 1 } return res } }
備註:
核心思想,利用二進位制轉十六進位制,使用位運算,每4位,對應1位16進位制數字。
num & 15 取num二進位制的最右側的4位,類似 num & 1 取num二進位制的最右側的1位。
二進位制0000-1111 正好對映十六進位制的0-f。
正數,右移左側補0,負數,右移左側補1。
二進位制是32位有符號數,4位右移一次,所以轉為十六進位制右移8次。