如何在Swift中将Character转换为UInt8
发布时间:2020-12-14 04:52:30 所属栏目:百科 来源:网络整理
导读:我在 swift中有一系列角色: static let charArray: [Character] = [ "S","t","r","i","n","g"] 我想对每个字符进行一些按字节操作作为字节(UInt8).例如,如何将charArray [0]转换为UInt8? 解决方法 您需要通过Character:s的String表示转换为UInt8.但是,您
我在
swift中有一系列角色:
static let charArray: [Character] = [ "S","t","r","i","n","g"] 我想对每个字符进行一些按字节操作作为字节(UInt8).例如,如何将charArray [0]转换为UInt8? 解决方法
您需要通过Character:s的String表示转换为UInt8.但是,您无需在[Character] – >中显式初始化数组. [UInt8]转换;因为String.UTF8View(来自String.utf8)是一个CollectionType,你可以对String.UTF8View本身应用一个map操作;使用UInt8初始化.即,
let charArray: [Character] = [ "S","g"] let asUInt8Array = String(charArray).utf8.map{ UInt8($0) } print(asUInt8Array) /* [83,116,114,105,110,103] */ print(asUInt8Array.dynamicType) /* Array<UInt8> */ 关于你的下面的评论(“与Swift的抽象相比,与Objective-C的简单方式相比受挫”):如果你认为上面的内容很混乱,你可以将它包含在SequenceType的扩展中,约束到Character元素,允许在实践中更容易使用.例如.: extension SequenceType where Generator.Element == Character { /* extension accessible as function */ func asByteArray() -> [UInt8] { return String(self).utf8.map{UInt8($0)} } /* or,as @LeoDabus pointed out below (thanks!),use a computed property for this simple case */ var byteArray : [UInt8] { return String(self).utf8.map{UInt8($0)} } } 用法示例: let charArray: [Character] = [ "S","g"] /* use extension function */ let asUInt8Array = charArray.asByteArray() /* or computed property */ let asUInt8Array = charArray.byteArray (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |