从 NSData 字节获取浮点值
Posted
技术标签:
【中文标题】从 NSData 字节获取浮点值【英文标题】:Get float value from NSData bytes 【发布时间】:2016-04-14 16:26:53 【问题描述】:我怎么写这个
float value = *(float *)[data bytes];
很快?
谢谢。
【问题讨论】:
【参考方案1】:对应的Swift代码是
let value = UnsafePointer<Float>(data.bytes).memory
which – 作为您的 Objective-C 代码 – 假定 NSData
对象有(至少)4个字节,代表一个浮点值
按主机字节顺序。
UnsafePointer<Float>(..)
对应于 (float *)
演员表。
.memory
对应于解引用运算符*
。
另一种选择是
var value : Float = 0
data.getBytes(&value, length: sizeofValue(value))
【讨论】:
你拯救了我的一天!!谢谢十亿。 出于好奇,这里有什么我们应该注意的内存管理问题吗?或者裁判计数会解决这个问题? @MauryMarkowitz:您想到了哪些内存管理问题?字节被复制到value
变量中,struct Float
是一个值类型,而不是一个引用类型。
就是这样,我很想知道它是不是堆指针而不是 COW 对象。我假设是 COW,但总是可以放心地问...以上是关于从 NSData 字节获取浮点值的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 来自 NSData 完成处理程序的 writeToFile