Swift:从字节数据中提取浮点数

2023-12-09

我正在寻找一种健壮且优雅的方法来从数组中提取四个大端字节作为浮点数。

我可以通过如下方式获得带有位的 UInt32:

let data: [Byte] = [0x00, 0x00, 0x00, 0x40, 0x86, 0x66, 0x66, 0x00]
let dataPtr = UnsafePointer<Byte>(data)
let byteOffset = 3
let bits = UnsafePointer<UInt32>(dataPtr + byteOffset)[0].bigEndian

但我想不出一个好方法将其转换为 Swift 中的 Float 。

例如,在 Java 中:

float f = Float.intBitsToFloat(bits)

or in C:

float f = *(float *)&bits;

我尝试将 dataPtr 转换为 float UnsafePointer,但字节顺序是一个问题。

有什么建议么?


浮点类型具有静态_fromBitPattern这将返回一个值。<Type>._BitsType是正确大小的无符号整数的类型别名:

let data: [Byte] = [0x00, 0x00, 0x00, 0x40, 0x86, 0x66, 0x66, 0x00]
let dataPtr = UnsafePointer<Byte>(data)
let byteOffset = 3
let bits = UnsafePointer<Float._BitsType>(dataPtr + byteOffset)[0].bigEndian
let f = Float._fromBitPattern(bits)

您在自动完成中看不到该方法,但它是一个的一部分FloatingPointType协议。有一个实例方法可以返回这些位,称为._toBitPattern().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift:从字节数据中提取浮点数 的相关文章

随机推荐

  • Cocoa 中是否有一些功能可以用自然语言显示时间间隔?

    我正在寻找的是一个可以用自然语言显示时间间隔的 Cocoa 或第三方 类 例如 10 秒前 1小时前 2天前 你知道有什么可以帮助我完成这项任务 而无需自己编写并陷入 if else 地狱吗 我最初指出的那个似乎不再存在了 但正如所指出的那
  • 根据另一列更改一列的值(对于某些行)

    我有一个数据框 df ID lt c 1 2 3 4 5 category lt c Shirts Shirts Shirts Sweaters Sweaters subcategory lt c V Neck V Neck Round S
  • 在 PHP 中将数据库结果回显为 html 代码的最佳方法是什么?

    当我在数据库中有这样的值时 foo 我怎样才能在不与html代码冲突的情况下回显它 notice
  • cv2.VideoWriter 的输出不正确。速度更快了

    我正在尝试使用 opencv 的 cv2 VideoWriter 录制一段视频一段时间 问题是输出不正确 例如 10秒的视频只有2秒 并且播放速度更快 这是我的代码 欢迎任何建议或想法 另外 另一个问题是输出视频没有声音 谢谢 主机 树莓派
  • 从密码生成密钥对

    我想使用基于密码的私钥的非对称加密 要求是提供的安全级别必须与 1 使用基于密码的对称加密 2 以 常规 方式使用非对称加密相同 我将不得不在 Java 中使用它 但答案可以是通用的 我知道我可以生成密钥对并使用基于密码的对称密钥加密私钥
  • 是否有 .NET StringBuilder 功能版本的开源(非 GPL)实现?

    我正在寻找 StringBuilder 或等效项的功能 如非命令式 实现 我见过一些函数式数组的实现 但它们本身不支持插入 开源 非 L A GPL 的奖励 F 的奖励 但如果需要 我可以从 Haskell OCaml SML 进行翻译 欢
  • 经典 ASP - 将属性作为 byref 传递

    在经典 ASP 中 我有一个对象 称之为bob 那么它有一个名为name with let and get方法 我有一个函数如下 sub append byref a b a a b end sub 这只是为了更快地向变量添加文本 我也有同
  • 在 Android 中录制声音并读取振幅

    我正在尝试制作一个应用程序 记录声音一秒钟 然后从记录的声音中读取最大幅度 这是我到目前为止所拥有的 但我的应用程序崩溃了 我不明白为什么 这是我的第二个活动 我在按下 记录 按钮后从第一个活动中调用该活动 该应用程序在我的模拟器和手机上崩
  • 如何让 jquery-ui 自动完成退出 iframe?

    是否可以使自动完成 jQueryUI 的建议从一个 iframe 中出来 具有与 select 元素相同的行为 我举一个例子 http jsbin com ehidef 1 事实上 这是可以做到的 尽管一些样式是强制性的 jQueryUI
  • Autoconf 路径中存在空格

    我刚刚将一个 C 项目转换为一个 autotools 项目 并在 configure ac 中编写了几行here 当我的路径应该是 bla bla 时 构建失败并显示 sh home me bla 没有这样的文件或目录 问题是我没有在任何地
  • NSArray 对 ARC 下对象的弱引用 (__unsafe_unretained)

    我需要在 NSArray 中存储对对象的弱引用 以防止保留循环 我不确定要使用的正确语法 这是正确的方法吗 Foo foo1 Foo alloc init Foo foo2 Foo alloc init unsafe unretained
  • WPF 和 CefSharp:性能低下

    我已经成功地用 c winforms 制作了一个个人迷你浏览器应用程序 因为我想要一些更奇特的效果 所以我正在考虑制作一个 WPF 应用程序 因此 我尝试了 wiki 教程并使用浏览器设置了一个简单的 WPF 表单 但注意到它的性能很慢 当
  • C#,如何访问当前线程中在其他线程中创建的内容?

    我正在用 C 编写聊天客户端 服务器应用程序 但我遇到了线程问题 我写了这个简单的代码来显示我的问题 我使用 thread 1 来显示 Form 但它只显示了一秒钟 也许 thread 1 终止并关闭了 Form 但我 IsAlive 说它
  • C4473 结构分配警告

    我目前正在做一项作业 很好奇编译时出现的警告是什么以及如何补救 它会构建 但当我调试时 它会出现错误屏幕 下面是出现的警告 1 gt c 用户 cesteves documents c 编程 库存 库存 inventory cpp 48 警
  • 将广播意图从服务发送到应用程序类

    是否可以将意图从服务发送到应用程序类 不是活动 我不知道在特定时间将运行什么活动 因此我在活动类中添加一个布尔标志 用于检测活动并根据收到的广播发送适当的数据 If your Service是活跃的 那么你的Application类是act
  • EF 6 与 ODP.Net Oracle.ManagedDataAccess,如何对类属性使用非大写字母?

    我正在将 EF 6 与 ODP Net 结合使用Oracle ManagedDataAccess对于我的 ASP Net MVC Web 应用程序 我有以下内容Model called Employee in Model Employee
  • 使用 Facebook iOS SDK 2,我如何喜欢某个页面? - “应用程序必须在白名单中”

    如何使用新的 Facebook iOS SDK 喜欢 某个页面 http github com facebook facebook ios sdk 我目前正在尝试这样做 NSMutableDictionary dict NSMutableD
  • Angular 6 仅需要多个字段中的一个字段反应形式

    我是角度新手 我有一种情况 我只需要表单中 5 个字段中的一个字段 这意味着如果用户至少填写一个字段 那么表单就有效 提前致谢 由于只有当其中一个字段非空时才需要检查整个表单的有效性 因此您可以手动设置有效性 如下所示 if this va
  • R stargazer:不同的小数

    我的 R 中的 stargazer 输出有问题 这是我的原始数据框 Rank p LMax 10 5 1 var1 0 427 24 25 21 8 27 4 31 5 var2 0 228 7 23 11 5 12 2 16 7 观星者创
  • Swift:从字节数据中提取浮点数

    我正在寻找一种健壮且优雅的方法来从数组中提取四个大端字节作为浮点数 我可以通过如下方式获得带有位的 UInt32 let data Byte 0x00 0x00 0x00 0x40 0x86 0x66 0x66 0x00 let dataP