如何在Swift中将二进制转换为十进制?

Gea*_*ves 14 swift swift2

我正在寻找一种简单的方法来转换Swift中的十进制二进制数.例如,二进制中的"10"在十进制中变为"2".

谢谢,

Mar*_*n R 31

更新斯威夫特2:所有整数类型有

public init?(_ text: String, radix: Int = default)
Run Code Online (Sandbox Code Playgroud)

now now,根据给定的基础将字符串转换为整数:

let binary = "11001"
if let number = Int(binary, radix: 2) { 
    print(number) // Output: 25
}
Run Code Online (Sandbox Code Playgroud)

(上一个答案:)您可以简单地使用BSD库函数strtoul(),该函数根据给定的基数将字符串转换为数字:

let binary = "11001"
let number = strtoul(binary, nil, 2)
println(number) // Output: 25
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 17

更新:Xcode 7.2•Swift 2.1.1

您可以使用名为strtoul的C++函数实现Martin R的Answer扩展,如下所示:

extension String {
    var hexaToInt      : Int    { return Int(strtoul(self, nil, 16))      }
    var hexaToDouble   : Double { return Double(strtoul(self, nil, 16))   }
    var hexaToBinary   : String { return String(hexaToInt, radix: 2)      }
    var decimalToHexa  : String { return String(Int(self) ?? 0, radix: 16)}
    var decimalToBinary: String { return String(Int(self) ?? 0, radix: 2) }
    var binaryToInt    : Int    { return Int(strtoul(self, nil, 2))       }
    var binaryToDouble : Double { return Double(strtoul(self, nil, 2))   }
    var binaryToHexa   : String { return String(binaryToInt, radix: 16)  }
}

extension Int {
    var binaryString: String { return String(self, radix: 2)  }
    var hexaString  : String { return String(self, radix: 16) }
    var doubleValue : Double { return Double(self) }
}

"ff".hexaToInt              // "255"
"ff".hexaToDouble           // "255.0"
"ff".hexaToBinary           // "11111111"
"255".decimalToHexa         // "ff"
"255".decimalToBinary       // "11111111"
"11111111".binaryToInt      // "255"
"11111111".binaryToDouble   // "255.0"
"11111111".binaryToHexa     // "ff"
255.binaryString            // "11111111"
255.hexaString              // "ff"
255.doubleValue             // 255.0
Run Code Online (Sandbox Code Playgroud)