从NSData的获取浮点值字节

问题描述:

我怎么可以这样写从NSData的获取浮点值字节

float value = *(float *)[data bytes]; 

在迅速?

谢谢。

对应的SWIFT代码是

let value = UnsafePointer<Float>(data.bytes).memory 

其中 - 作为Objective-C代码 - 假定NSData 物体具有(至少)4个字节,代表在主机字节顺序的浮点值 。

  • UnsafePointer<Float>(..)对应于(float *)演员。
  • .memory对应于解引用运算符*

另一种方法是

var value : Float = 0 
data.getBytes(&value, length: sizeofValue(value)) 
+0

你救了我的天!谢谢十亿。 – masgar

+0

出于好奇,有没有我们应该注意的内存管理问题?或者裁判计数会照顾这个吗? –

+0

@MauryMarkowitz:你有什么内存管理问题?字节被复制到'value'变量中,'struct Float'是一个值类型,而不是引用类型。 –