gpt4 book ai didi

ios - 如何在 Swift 中解析由蓝牙设备发送的 float ?

转载 作者:搜寻专家 更新时间:2023-10-31 22:27:58 25 4
gpt4 key购买 nike

在我的 iOS 应用程序上,我需要解码蓝牙接收的 Float 值并从不同的设备(不是 iOS)获取 4 个字节,所以我需要一个“可移植”4 字节 Float 格式。现在发件人使用这种格式:

数据编码:0xCCBBAAEE- 0xEE:指数,1 个有符号字节。- 0xCCBBAA:尾数,3 个有符号字节。

我的问题是:如何从这样的指数和尾数构造一个 (ios) float ?

在 iOS Float 中有这个初始化器:public init(符号:FloatingPointSign,指数:Int,尾数:Float)

我可以很容易地从带符号的尾数中计算出符号参数,从带符号的指数中计算出 Exp 参数,但重要参数采用 float ,但有效参数是 float ,我只收到一个 3 字节的尾数。

最佳答案

假设您正在关注 standard IEEE format ,看起来你真的是——我很难相信你的这个蓝牙设备会在电线上使用任何其他东西——然后试试这个初始化器(自 Swift 3 起可用):

init(
sign: FloatingPointSign,
exponentBitPattern: UInt,
significandBitPattern: UInt32
)

这是由 BinaryFloatingPoint 定义的协议(protocol):

The values passed as exponentBitPattern and significandBitPattern are interpreted in the binary interchange format defined by the IEEE 754 specification.

上面提到的(单精度)Float 的 IEEE 754 是:

  • 符号位:1位
  • 指数宽度:8位
  • 有效位数精度:24 位(23 位显式存储)

这个其他Float initializer应该也能正常工作:

init(bitPattern: UInt32)

在这两种情况下,请注意 big- vs little-endianness 问题,你应该没问题;)

关于ios - 如何在 Swift 中解析由蓝牙设备发送的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com