gpt4 book ai didi

objective-c - 从 nsdata objective-c iOS 获取浮点值

转载 作者:行者123 更新时间:2023-12-04 02:37:18 25 4
gpt4 key购买 nike

我正在尝试从包含多个十六进制值的 NSData 对象中获取浮点值。例如EC 51 38 41从这 4 个字节的值中,我想得到浮点值 11.52。我必须如何在 xcode 中执行此操作?

我已经用 NSScanner(scanFloat、scanHexFloat)、NSNumberformatterNSNumber 尝试过,我创建了一个字节数组并尝试了 float myFloat = *(float*)&myByteArray.我在 stackoverflow 上找到的所有这些选项。

我在 Windows 中用 C# 测试过,没有问题:

byte[] bytes = new byte[4] { 0xEC, 0x51, 0x38, 0x41 };

float myFloat = System.BitConverter.ToSingle(bytes, 0);

有人知道我必须如何在 xcode 中执行此操作吗???

谢谢,本杰明

最佳答案

从外部协议(protocol)转换二进制数据时,始终确保包含适当的字节序交换:

uint32_t hostData = CFSwapInt32BigToHost(*(const uint32_t *)[data bytes]);
float value = *(float *)(&hostData);

您必须知道编码数据的字节顺序。您可能需要改用 CFSwapInt32LittleToHost

关于objective-c - 从 nsdata objective-c iOS 获取浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18437535/

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