十六进制字符串到文本的转换-Swift 3

nso*_*zzo 3 string hex text swift

我正在尝试将十六进制字符串转换为文本。

这就是我所拥有的:

// Str to Hex
func strToHex(text: String) -> String {
    let hexString = text.data(using: .utf8)!.map{ String(format:"%02x", $0) }.joined()

   return "0x" + hexString

}
Run Code Online (Sandbox Code Playgroud)

并且我正试图将刚创建的十六进制字符串恢复为原始字符串。

因此,例如:

let foo: String = strToHex(text: "K8") //output: "0x4b38"
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情

let bar: String = hexToStr(hex: "0x4b38") //output: "K8"
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?谢谢

Ale*_*ara 5

您可能可以使用以下内容:

func hexToStr(text: String) -> String {

    let regex = try! NSRegularExpression(pattern: "(0x)?([0-9A-Fa-f]{2})", options: .caseInsensitive)
    let textNS = text as NSString
    let matchesArray = regex.matches(in: textNS as String, options: [], range: NSMakeRange(0, textNS.length))
    let characters = matchesArray.map {
        Character(UnicodeScalar(UInt32(textNS.substring(with: $0.rangeAt(2)), radix: 16)!)!)
    }

    return String(characters)
}
Run Code Online (Sandbox Code Playgroud)