Swift 4 十六进制字符串到二进制字符串

Jam*_*mes -1 binary hex swift

请注意,将十六进制字符串转换为二进制字符串的旧方法已从 swift 中删除,即: String(hex, radix: 2) -> 二进制字符串

swift 4 中的替代方案是什么?

Leo*_*bus 5

您首先需要将 hexaString 转换为 Bytes Array [UInt8]。然后您可以使用String(_, radix:)将字节转换为二进制。请注意,如果您想返回 aString而不是字符串数组,[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()
    }
}
Run Code Online (Sandbox Code Playgroud)
let hexString = "00ff01fe"

hexString.hexaToBinary   // "00000000111111110000000111111110"
Run Code Online (Sandbox Code Playgroud)