我知道Stack Overflow和其他地方都存在这样的问题。但是它似乎也发展了很多。
给定一个列表UInt8
(基本上是一个swift字节数组),最简单/惯用的方法是将其隐式化为swift String
?
我对不使用NSData / NSString的方法特别感兴趣,因为如果Santa将Swift带入Linux的世界,那么无疑将没有NS库,而且我想知道如何做到这一点。迅速。
Xcode 8•Swift 3
extension Collection where Iterator.Element == UInt8 { var bytes: [UInt8] { return Array(self) } var data: Data { return Data(self) } var string: String? { return String(data: data, encoding: .utf8) } } extension String { var data: Data { return Data(utf8) } }
用法:
let sentence = "Hello World" let utf8View = sentence.utf8 let bytes = utf8View.bytes // [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100] let data1 = sentence.data print(data1 as NSData) // <48656c6c 6f20576f 726c64> let data2 = utf8View.data let data3 = bytes.data let string1 = utf8View.string // "Hello World" let string2 = bytes.string // "Hello World" let string3 = data1.string // "Hello World"