-
這里所說的轉換,並不是Swift中字面量之間的轉換。如果是字面量之間的轉換,ios系統中已經自動幫我們轉換了。
例如
let number1:Int = 8
let number2:Int = 0b1000
let number3:Int = 0x8
這三個常量都是同一個值。
-
接下來要寫的是真正意義上的進制之間轉換
1.十進制轉二進制
//十進制轉二進制,返回的是字符串格式 String(15,radix:2) 返回為“1111”//如果再想把字符串格式改成整型格式 let number = String(15,radix:2) Int(number) 返回為1111
2.二進制轉十進制
func binary2dec(num:String) -> Int { var sum = 0 for c in num.characters { sum = sum * 2 + Int("\\(c)")! } return sum } binary2dec("1111") 返回為15
3.十進制轉十六進制
//十進制轉十六進制,返回的是字符串格式 String(15,radix:16)
4.十六進制轉十進制
//如果想逼格高點,可以稍微擴展一下String extension String{ static func changeToInt(num:String) -> Int { let str = num.uppercaseString 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 } } String.changeToInt(number2)//當然也可以不必擴展String,定義一個函數即可。 func changeToInt(num:String) -> Int { let str = num.uppercaseString 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 } changeToInt("f")
至此,已經寫完平時敲碼積累的小心得,希望可以幫助大家對進制轉換游刃有余啦。
作者:ChinaSwift
鏈接:http://www.jianshu.com/p/34d5e958910a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
