注意到将十六进制字符串转换为二进制字符串的旧方法已从swift中删除,即:String(hex,radix:2) - >二进制字符串
swift 4中有什么替代方案?
答案 0 :(得分:1)
首先需要将hexaString转换为字节数组[UInt8]
。然后,您可以使用String(_, radix:)
将字节转换为二进制。请注意,如果您想返回String
而不是字符串数组[String]
,则需要添加前导零以使二进制字符串长度一致(8个字符):
extension String {
typealias Byte = UInt8
var hexaToBytes: [Byte] {
var start = startIndex
return stride(from: 0, to: count, by: 2).compactMap { _ in // use flatMap for older Swift versions
let end = index(after: start)
defer { start = index(after: end) }
return Byte(self[start...end], radix: 16)
}
}
var hexaToBinary: String {
return hexaToBytes.map {
let binary = String($0, radix: 2)
return repeatElement("0", count: 8-binary.count) + binary
}.joined()
}
}
let hexString = "00ff01fe"
hexString.hexaToBinary // "00000000111111110000000111111110"