在Swift 2中,将十六进制字符字符串转换为其ASCII等效字符串的最佳方法是什么。
我们希望运行一个函数(或字符串扩展),它可以输出:'MLNc',这是十六进制字符串的ASCII等效值。
伪代码:
给定
let str1 = "0x4d 0x4c 0x4e 0x63"
let str2 = "4d 4c 4e 63"
let str3 = "4d4c4e63"
let str4 = "4d4d 4e63"
let str5 = "4d,4c,4e,63"
我们希望运行一个函数(或字符串扩展),它可以输出:'MLNc',这是十六进制字符串的ASCII等效值。
伪代码:
- 剥离所有“垃圾”,例如逗号和空格。
- 获得“2个字符块”,然后使用
strtoul
将这些字符转换为整数等效值。 - 构建字符数组并将它们合并成一个字符串。
func hexStringtoAscii(hexString : String) -> String {
let hexArray = split(hexString.characters) { $0 == " "}.map(String.init)
let numArray = hexArray.map{ strtoul($0, nil, 16) }.map{Character(UnicodeScalar(UInt32($0)))}
return String(numArray)
}
这个部分的实现是正确的吗?如果是,最好处理块的方法是什么?