如何从 UnsafeMutableRawPointer 中获取字节?

2024-04-16

如何访问由 C API(Core Audio 等)传递给 Swift 函数的 UnsafeMutableRawPointer(Swift 3 中的新功能)指向的内存之外的字节(或 Int16、浮点数等)


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 to a 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 不安全RawPointer API https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 UnsafeMutableRawPointer 中获取字节? 的相关文章

随机推荐

  • Laravel 5 - 如何在视图中访问存储中上传的图像?

    我已将用户的头像上传到 Laravel 存储中 我如何访问它们并将它们呈现在视图中 服务器将所有请求指向 public 那么如果他们在的话我该如何向他们展示 storage folder The best方法是创建一个符号链接就像 Slat
  • bin目录和PATH

    我是编程初学者 有人可以解释一下 用简单的话 程序的 bin 目录中有什么吗 这是什么PATHwindows的环境变量 它是如何工作的 请不要以为我不会使用Google 我只是想更清楚地理解它 通常将程序的所有二进制文件放在 bin 目录中
  • CakePHP 总是让我退出

    最近我制作了三个蛋糕应用程序 这三个应用程序都有这个问题 配置大部分是库存的 我使用它作为会话选项 Configure write Session array defaults gt php cookie gt test 经过大量谷歌搜索后
  • 通过在 datagridviewcolum 中指定 DefaultCellStyle.Format 值来显示百分比

    With datagridview Columns PricePerUnit ValueType Type GetType System Decimal DefaultCellStyle Format C End With 数据表绑定到 d
  • 从数据库中检索图像

    我正在开发一个显示员工列表的项目 此处将显示该员工的信息和照片 我的项目现在可以在列表框中显示员工列表 当我双击员工时 他 她的个人资料将显示在文本框中 我的问题是我无法让他们的照片显示在picturebox 我已经将他们的照片以及他们的
  • 绘制 dr4pl 剂量反应曲线,以及如何将它们与 ggplot2 集成?

    我正在尝试建立一种高通量方法来绘制大型筛选实验的剂量反应曲线 Prism 显然有最简单的方法可以很好地绘制剂量反应曲线 但我无法复制和粘贴这么多数据 自从 CRAN 被移除后drc 包dr4pl似乎是可行的方法 但目前可用的指导还很少 ma
  • 在python中解压嵌套的zip文件

    我正在寻找一种在 python 中解压缩嵌套 zip 文件的方法 例如 考虑以下结构 为方便起见 使用假设名称 Folder ZipfileA zip 压缩文件A1 zip 压缩文件A2 zip ZipfileB zip 压缩文件B1 zi
  • 在 C 中将整数转换为二进制

    我正在尝试将整数 10 转换为二进制数 1010 此代码尝试执行此操作 但我在 strcat 上遇到段错误 int int to bin int k char bin bin char malloc sizeof char while k
  • 为多面图中的单个面板添加几何图层

    从以下链接中获取提示使用 ggplot2 对齐两个图 http rwiki sciviews org doku php id tips graphics ggplot2 aligntwoplots 我能够根据共同的 x 轴绘制 2 个 y
  • 流明:启用 CORS

    我使用 Lumen 构建了一个 API 并希望使用 JavaScript 和 XMLHttpRequest 对象访问它 但每次我的 PUT GET POST 和 DELETE 请求都会转化为选项 请求 我看了很多网站都有CORS的信息 我构
  • 点击按钮后 Python Tkinter 销毁标签

    我有一个在单击按钮后出现的标签 但是每次单击按钮后 前一个标签仍保留在其位置并创建一个新标签 我希望将新标签代替旧标签 代码如下 browser webdriver PhantomJS browser get http www ipvoid
  • iPhone硬计算和缓存

    我有问题 我有数据库500k记录 每个记录存储纬度 经度 动物种类 观察日期 我必须在 Mapkit 视图上方绘制网格 15x10 以显示该网格单元中物质的浓度 每个单元格都是 32x32 的盒子 如果我在运行时计算它是非常slow 有人知
  • Cocoa:如何将布尔属性绑定到 NSCellStateValue?

    我想绑定布尔值enabled的财产NSTextField到一个状态NSButton 我已经尝试添加自定义NSValueTransformer从而改变了状态NSButton into NSNumber 但是 在这种情况下 由于某种原因 文本字
  • 有没有办法通过命令行将 JVM 参数传递给 Maven? [复制]

    这个问题在这里已经有答案了 可能的重复 Maven Jetty 插件 如何控制 VM 参数 https stackoverflow com questions 2007192 maven jetty plugin how to contro
  • 如何在 Java 中对 HTTP 请求中的西里尔字母进行编码?

    美好时光 我的 Adroid 应用程序向 Google 的 API 服务之一执行 HTTP 请求 当然 当请求的参数是英文时 它可以工作 但是当我用西里尔文测试我的函数时 我收到 400 错误 似乎问题是将 Win 1251 字符串编码为
  • 将数据从 Azure HUB-IOT 保存到 Azure SQL 数据库

    我最近创建了一个 Azure Hub IOT 其中我从虚拟设备发送一些数据 我知道数据已到达 因为我可以从终端看到它们 但现在我想获取这些数据并将它们保存到 Azure SQL DataBase 中 我怎样才能做到这一点 如果有人可以向我解
  • 如何 git Blame 目录

    我想知道如何使用 gitblame 来知道谁创建了单个目录 当我尝试时 git blame DIRECTORY NAME I get fatal no such path DIRECTORY NAME in HEAD 顺便说一句 该目录是空
  • 向 Windows 窗体消息循环发送或发布消息

    我有一个线程从命名管道读取消息 它是阻塞读取 这就是它在自己的线程中的原因 当该线程读取消息时 我希望它通知主线程中运行的 Windows 窗体消息循环消息已准备就绪 我怎样才能做到这一点 在win32中我会做一个PostMessage 但
  • 无法加密特殊字符:不是块长度的倍数

    我有一个加密 解密算法 我试图加密一些特殊字符从android发送到服务器 但它抛出一个异常 java lang Exception 加密 错误 0607F08A 数字信封例程 EVP EncryptFinal ex 数据不是块长度的倍数
  • 如何从 UnsafeMutableRawPointer 中获取字节?

    如何访问由 C API Core Audio 等 传递给 Swift 函数的 UnsafeMutableRawPointer Swift 3 中的新功能 指向的内存之外的字节 或 Int16 浮点数等 load