栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将具有长度的UnsafePointer转换为Swift数组类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将具有长度的UnsafePointer转换为Swift数组类型

您可以简单地

Array
从初始化Swift
UnsafeBufferPointer

func convert(length: Int, data: UnsafePointer<Int8>) -> [Int8] {    let buffer = UnsafeBufferPointer(start: data, count: length);    return Array(buffer)}

这将创建所需大小的数组并复制数据。

或作为通用函数:

func convert<T>(count: Int, data: UnsafePointer<T>) -> [T] {    let buffer = UnsafeBufferPointer(start: data, count: count);    return Array(buffer) }

指针指向

length
项目 数在哪里。

如果您有一个

UInt8
指针但想
[T]
从指向的数据创建一个数组,那么这是一个可能的解决方案:

// Swift 2:func convert<T>(length: Int, data: UnsafePointer<UInt8>, _: T.Type) -> [T] {    let buffer = UnsafeBufferPointer<T>(start: UnsafePointer(data), count: length/strideof(T));    return Array(buffer) }// Swift 3:func convert<T>(length: Int, data: UnsafePointer<UInt8>, _: T.Type) -> [T] {    let numItems = length/MemoryLayout<T>.stride    let buffer = data.withMemoryRebound(to: T.self, capacity: numItems) {        UnsafeBufferPointer(start: $0, count: numItems)    }    return Array(buffer) }

其中

length
现在的数目 的字节 。例:

let arr  = convert(12, data: ptr, Float.self)

Float
从指向的12个字节中创建一个3 s 的数组
ptr



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号