当前位置: 首页 > 面试题库 >

如何从UnsafeMutableRawPointer中获取字节?

拓拔弘化
2023-03-14
问题内容

UnsafeMutableRawPointer(Swift 3中的新增功能)指向的一个字节如何从内存中访问字节(或Int16,float等),然后由C
API(核心音频等)传递给Swift函数。


问题答案:

load<T>从内存中读取原始字节并构造一个type值T

let ptr = ... // Unsafe[Mutable]RawPointer
let i16 = ptr.load(as: UInt16.self)

(可选)字节偏移量:

let i16 = ptr.load(fromByteOffset: 4, as: UInt16.self)

还有assumingMemoryBound(),从一个转换Unsafe[Mutable]RawPointer到一个Unsafe[Mutable]Pointer<T>,假设被指向的存储器包含类型T的值:

let i16 = ptr.assumingMemoryBound(to: UInt16.self).pointee

对于值数组,您可以创建“缓冲区指针”:

let i16bufptr = UnsafeBufferPointer(start: ptr.assumingMemoryBound(to: UInt16.self), count: count)

缓冲区指针可能已经足够满足您的目的,它可以下标,并且可以类似于数组进行枚举。如有必要,从缓冲区指针创建一个数组:

let i16array = Array(i16bufptr)

正如@Hamish所说,可以在以下位置找到更多信息和详细信息:

  • SE-0107 UnsafeRawPointer API


 类似资料:
  • 我有以下代码: LR是类的列表类型。在这个列表中,我有15个索引,例如在索引[0]中,我有: 现在在这个索引[0]中,我有两个int的变量end 88和start 96 在这个for循环中,我需要做的是: _fts是一个<代码>列表 我有两个错误: 错误31“系统”的最佳重载方法匹配。集合。通用。列表。添加(int)”有一些无效参数 和 错误32参数1:无法从“Lightings\u提取器”转换。

  • 我必须从文件中获取一个数字,有些文件包含字母和数字。比如(dsh8kuebw9)或者有(8)这样的空格,我怎样才能得到这些数字?我试过很多次了。我有一个方法可以找到一个数字出现在一个数字中的方法是count8方法。 parseInt将文件的行转换为整数,但由于在某些文件中有字母,我的方法遇到了问题,因为它只接受整数而不接受字符串

  • 我有一张狗的名单,需要取一些数据。在一种情况下,我需要在列表中显示名称行,在其他情况下,我需要来自一只狗的全部或部分数据(名称、性别、速度)。我相当肯定我应该使用数组,尽管我是从字典开始的。我计划添加更多参数,并允许用户添加更多的狗,所以我试图找到最可扩展的选项

  • 问题内容: 如何在Python中获取字典中的值列表? 在Java中,将Map的值作为列表获取就像在操作中一样容易。我想知道Python中是否有类似的简单方法可以从字典中获取值列表。 问题答案: 是的,这与Python 2 完全相同: 在Python 3中 (在其中返回字典值的 视图 ):

  • 我做了一个ping实验,结果是: 我需要的是收到的数据包数,丢包数,min,avg和max。 我试图使用

  • 我正在做一个项目,在那里用户可以写其他用户的邮件。邮件类当前如下所示: 现在,问题是,我需要将所有邮件保存到. yml用户数据文件中。对我来说,最简单的方法是首先将每封邮件转换为字符串,然后将所有邮件保存到