将浮点数转换为NSData并返回Objective-C

ing*_*.am 13 iphone objective-c

在iphone应用程序中,我希望将浮动转换为NSData,以便通过蓝牙发送,然后在收到时再转换回来.我有蓝牙部分工作正常,但当我使用它转换为NSData时:

NSData *data = [[NSData alloc]init];

float z = 9.8574; // Get the float value, 9.8574 is just an example

[data getBytes:&z length:sizeof(float)];
Run Code Online (Sandbox Code Playgroud)

我无法将其转换回浮动.我尝试了几种方法,但我想知道这是否是将float编码为NSData的正确方法?

谢谢

e.J*_*mes 28

下面是如何编码和解码float具有NSData:

编码方式:

NSMutableData * data = [NSMutableData dataWithCapacity:0];
float z = ...;
[data appendBytes:&z length:sizeof(float)];
Run Code Online (Sandbox Code Playgroud)

解码:

NSData * data = ...; // loaded from bluetooth
float z;
[data getBytes:&z length:sizeof(float)];
Run Code Online (Sandbox Code Playgroud)

这里有几点需要注意:

1.你必须使用NSMutableData,如果你要创建后的东西添加到数据对象.另一种选择是简单地一次性加载数据:

NSData * data = [NSData dataWithBytes:&z length:sizeof(float)];

2.getBytes:length:方法用于从对象中检索字节NSData,而不是用于将字节复制到其中.