如何在 Swift 中将带有十六进制数据的 NSData 对象转换为 ASCII?

Jak*_*ake 2 string hex nsdata ios swift

我有一个NSData带有十六进制数据的对象,我想将其转换为 ASCII 字符串。我见过几个与我类似的问题,但它们都在 Objective-C 中和/或它们将字符串转换为十六进制数据,而不是相反。

我发现这个功能,但它不能在斯威夫特2和工作的苹果文档不解释老之间的差异stride和新的stride(它并不能解释所有步幅):

func hex2ascii (example: String) -> String
{

    var chars = [Character]()

    for c in example.characters
    {
        chars.append(c)
    }

    let numbers =  stride(from: 0, through: chars.count, by: 2).map{ // error: 'stride(from:through:by:)' is unavailable: call the 'stride(through:by:)' method instead.
        strtoul(String(chars[$0 ..< $0+2]), nil, 16)
    }

    var final = ""
    var i = 0

    while i < numbers.count {
        final.append(Character(UnicodeScalar(Int(numbers[i]))))
        i++
    }

    return final
}
Run Code Online (Sandbox Code Playgroud)

我不知道是什么stride,也不知道它有什么作用。

你如何在 Swift 2 中将十六进制转换为 ASCII?也许是 NSData 扩展...

谢谢!

gam*_*ill 6

尝试:

let asciiString = String(data: data, encoding: NSASCIIStringEncoding)
print(asciiString)
Run Code Online (Sandbox Code Playgroud)