我试图创建一个快速的iOS程序,将数字转换为dec,bin和hex数字。我已经遇到过strtoul功能,但是不太了解如何使用它,有人能够解释它吗?谢谢!
答案 0 :(得分:4)
方法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"
答案 1 :(得分:0)
strtoul()函数将str中的字符串转换为unsigned long 值。转换是根据给定的基数完成的,基数必须介于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)
十进制(小数点后两位)
var st = NSString(format:"%.02f", n)