微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我发现如何将六进制字符串转换为字节[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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐