Swift3 二進位制、十進位制、十六進位制轉換
阿新 • • 發佈:2019-01-29
直接上程式碼,都是很簡單的進位制轉換演算法
其實系統自帶了進位制轉換的演算法final class Conversion { // MARK: - 十進位制轉二進位制 class func decTobin(number:Int) -> String { var num = number var str = "" while num > 0 { str = "\(num % 2)" + str num /= 2 } return str } // MARK: - 二進位制轉十進位制 class func binTodec(number num: String) -> Int { var sum: Int = 0 for c in num.characters { let str = String(c) sum = sum * 2 + Int(str)! } return sum } // MARK: - 十進位制轉十六進位制 class func decTohex(number:Int) -> String { return String(format: "%0X", number) } // MARK: - 十六進位制轉十進位制 class func hexTodec(number num:String) -> Int { let str = num.uppercased() var sum = 0 for i in str.utf8 { sum = sum * 16 + Int(i) - 48 // 0-9 從48開始 if i >= 65 { // A-Z 從65開始,但有初始值10,所以應該是減去55 sum -= 7 } } return sum } }
print(Conversion.decTobin(number: 4))
print(Conversion.binTodec(number: "100"))
print(Conversion.decTohex(number: 16))
print(Conversion.hexTodec(number: "10"))
//系統自帶
print(String(16, radix: 16))
print(String(16, radix: 8))
print(String(16, radix: 2))
print(String(16, radix: 10))