2015-03-03 65 views
2

我想創建一個快速的iOS程序,將數字轉換成十進制,二進制和十六進制數字。我遇到過strtoul功能,但不太明白如何使用它,有人能夠解釋它嗎?謝謝!strtoul()函數 - 斯威夫特

+3

蘋果已經寫了一個巨大的文檔... – ByteHamster 2015-03-03 05:24:06

+0

這與Xcode沒有任何關係... – 2015-03-03 06:44:53

回答

0

strtoul()函數將str中的字符串轉換爲無符號長整數 值。轉換是根據給定的基礎,它必須是包容性的2和36之間,或者是特殊值0

真像你想使用NSString

從它聽起來像它聽起來這樣做,你想要將無符號整數轉換爲十進制,十六進制和二進制。

例如,如果你有一個整數n

var st = NSString(format:"%2X", n) 

將整數轉換爲十六進制,並將其存儲在變量st

//NSString(format:"%2X", 10) would give you 'A' as 10 is A in hex 
//NSString(format:"%2X", 17) would give you 11 as 17 is 11 in hex 

二進制:

var st = NSString(format:"%u", n) 

小數(小數點後2位)

var st = NSString(format:"%.02f", n) 
+0

好的。我假設「%2X」是十六進制的,對於二進制和十進制的等效值是多少? – WTL 2015-03-03 05:13:36

+0

我已經實現了代碼,但是我的二進制和小數點不起作用。二進制給我000000n值,小數只給我0.00。 – WTL 2015-03-03 05:44:24

3

方法strtoul將是非常簡單易用。您還需要使用String(radix :())將其轉換爲另一個方向。您可以創建一個擴展,從hexaToDecimal或binaryToDecimal如下轉變:

用法字符串(基數:())

extension Int { 
    var toBinary: String { 
     return String(self, radix: 2) 
    } 
    var toHexa: String { 
     return String(self, radix: 16) 
    } 
} 

使用strtoul將()

extension String { 
    var hexaToDecimal: Int { 
     return Int(strtoul(self, nil, 16)) 
    } 
    var hexaToBinary: String { 
     return hexaToDecimal.toBinary 
    } 
    var binaryToDecimal: Int { 
     return Int(strtoul(self, nil, 2)) 
    } 
    var binaryToHexa: String { 
     return binaryToDecimal.toHexa 
    } 
} 

測試

let myBinFromInt = 255.toBinary   // "11111111" 
let myhexaFromInt = 255.toHexa   // "ff" 

let myIntFromHexa = "ff".hexaToDecimal   // 255 
let myBinFromHexa = "ff".hexaToBinary   // "11111111" 

let myIntFromBin = "11111111".binaryToDecimal // 255 
let myHexaFromBin = "11111111".binaryToHexa  // "ff"