func stringToBytes(_ string: String) -> [UInt8]? { let chars = Array(string) let length = chars.count if length & 1 != 0 { return nil } var bytes = [UInt8]() bytes.reserveCapacity(length/2) for var i = 0; i < length; i += 2 { if let a = find(hexChars,chars[i]),let b = find(hexChars,chars[i+1]) { bytes.append(UInt8(a << 4) + UInt8(b)) } else { return nil } } return bytes}
示例Hex
十六进制:“7661706f72”
expectedOutput:“蒸汽”
解决方法 此代码可以生成与swift 2代码相同的输出.func stringToBytes(_ string: String) -> [UInt8]? { let length = string.characters.count if length & 1 != 0 { return nil } var bytes = [UInt8]() bytes.reserveCapacity(length/2) var index = string.startIndex for _ in 0..<length/2 { let nextIndex = string.index(index,offsetBy: 2) if let b = UInt8(string[index..<nextIndex],radix: 16) { bytes.append(b) } else { return nil } index = nextIndex } return bytes}let bytes = stringToBytes("7661706f72")print(String(bytes: bytes!,enCoding: .utf8)) //->Optional("vapor")总结
以上是内存溢出为你收集整理的如何在Swift 3中将HexString转换为ByteArray全部内容,希望文章能够帮你解决如何在Swift 3中将HexString转换为ByteArray所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)