swift Swift数据扩展,支持将数据转换为十六进制呈现的字符串,并通过十六进制字符串构造数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Swift数据扩展,支持将数据转换为十六进制呈现的字符串,并通过十六进制字符串构造数据相关的知识,希望对你有一定的参考价值。
import Foundation
extension Data {
func hexDescription() -> String {
return map { String(format: "%02X", $0) }
.joined(separator: "")
}
init?(hexString:String) {
// Convert 0 ... 9, a ... f, A ...F to their decimal value,
// return nil for all other input characters
func decodeNibble(_ u: UInt16) -> UInt8? {
switch(u) {
case 0x30 ... 0x39:
return UInt8(u - 0x30)
case 0x41 ... 0x46:
return UInt8(u - 0x41 + 10)
case 0x61 ... 0x66:
return UInt8(u - 0x61 + 10)
default:
return nil
}
}
let utf16 = hexString.utf16
var bytes:[UInt8] = []
var i = utf16.startIndex
while i != utf16.endIndex {
guard let hi = decodeNibble(utf16[i]),
let loIndex = utf16.index(i, offsetBy: 1, limitedBy: utf16.endIndex),
let lo = decodeNibble(utf16[loIndex])
else {
return nil
}
let value = hi << 4 + lo
bytes.append(value)
i = utf16.index(i, offsetBy: 2, limitedBy: utf16.endIndex) ?? utf16.endIndex
}
self.init(bytes: bytes)
}
}
以上是关于swift Swift数据扩展,支持将数据转换为十六进制呈现的字符串,并通过十六进制字符串构造数据的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 无法将核心数据转换为 url 参数
Swift 类型转换
Swift 3 将数据转换为 AVAsset 或 PHAsset
如何将 json 数据从 alamofire 转换为 swift 对象
Swift - NSJsonSerialization - “无法将数据转换为围绕字符的字符串”错误
如何在 Swift 中将 JSON 转换为数据类型?