如何在Swift 3中将HexString转换为ByteArray

如何在Swift 3中将HexString转换为ByteArray,第1张

概述我正在尝试将hexString转换为字节数组([UInt8])我搜索到了所有地方但找不到解决方案.下面是我的快速2代码 func stringToBytes(_ string: String) -> [UInt8]? { let chars = Array(string) let length = chars.count if length & 1 != 0 { 我正在尝试将hexString转换为字节数组([UInt8])我搜索到了所有地方但找不到解决方案.下面是我的快速2代码

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1209368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存