2015-03-03 55 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"