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

标签 objective-c nsdata

我正在尝试从包含多个十六进制值的 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/

相关文章:

ios - self.tableView reloadData 在 UISplitViewController 主细节应用程序中不起作用

objective-c - GCD - 串行队列是否需要 `NSLock` 或内存屏障来同步工作?

ios - 如何将原始类型的 3D 数组包装在 NSArray 中?

ios - 在 SFSafariViewController 上设置完成按钮颜色

ios - 将视频文件从 "Videos"应用程序导入到我的应用程序中

ios awkard 图像加载(url 到 nsdata 到 uiimage 到 uiimageview)

ios - NSData 到 NSArray 给出错误,原因如下 : '-[__NSCFArray bytes]:

ios - AFNetworking 可以很容易地返回一个 UIImage,但是我如何返回 NSData?

ios - 从 JSON 响应中提取一个属性

cocoa - ASCII 到 NSData