加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读