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

如何在Swift中将字节数组[UInt8]转换为hexa字符串

发布时间:2020-12-14 02:29:11 所属栏目:百科 来源:网络整理
导读:我发现如何将六进制字符串转换为字节[UInt8],但我还没有找到如何将字节[UInt8]转换为 Swift中的六进制字符串 此hexstring转换为字符串代码: static func bytesConvertToHexstring(byte : [UInt8]) - String { var string = "" for val in byte { //getBytes
我发现如何将六进制字符串转换为字节[UInt8],但我还没有找到如何将字节[UInt8]转换为 Swift中的六进制字符串

此hexstring转换为字符串代码:

static func bytesConvertToHexstring(byte : [UInt8]) -> String {
    var string = ""

    for val in byte {
        //getBytes(&byte,range: NSMakeRange(i,1))
        string = string + String(format: "%02X",val)
    }

    return string
}

像这样的结果:

"F063C52A6FF7C8904D3F6E379EB85714ECA9C1CB1E8DFD6CA5D3B4A991269D60F607C565C327BD0ECC0985F74E5007E0D276499E1ADB4E0C92D8BDBB46E57705B2D5390FF5CBD4ED1B850C537301CA7E"

UInt8数组:[0,11,8,15,6,5,4,14,9,12,10,2,13,3,1,??6,7,??14,??10,0]

Xcode 9或更高版本?Swift 4或更高版本
extension String {
    var hexaBytes: [UInt8] {
        var position = startIndex
        return (0..<count/2).flatMap { _ in    // for Swift 4.1 or later use compactMap instead of flatMap
            defer { position = index(position,offsetBy: 2) }
            return UInt8(self[position...index(after: position)],radix: 16)
        }
    }
    var hexaData: Data { return hexaBytes.data }
}

extension Collection where Element == UInt8 {
    var data: Data {
        return Data(self)
    }
    var hexa: String {
        return map{ String(format: "%02X",$0) }.joined()
    }
}
"0f00ff".hexaBytes           // [15,255]
"0f00ff".hexaData            // 3 bytes
"0f00ff".hexaData.hexa       // "0F00FF"
"0f00ff".hexaData as NSData  // <0f00ff>

(编辑:李大同)

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

    推荐文章
      热点阅读