NIK*_*HIL 15 iphone types objective-c ios
我想要NSData的隐蔽内容实际上我需要作为双重类型我怎么能转换它?
这里1ff46c56 7dd86f40 nsdata字节,我想要双倍
Ada*_*eld 12
假设您的数据正好是8个字节,您可以将其转换为double使用memcpy(3):
double ConvertNSDataToDouble(NSData *data)
{
double d;
assert([data length] == sizeof(d));
memcpy(&d, [data bytes], sizeof(d));
return d;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这假定数据采用本机endian格式.如果您知道数据是big-little-endian,那么您可能需要先将字节进行endian-swap.
你也可以这样做(除了亚当罗森菲尔德的回答).这仅在数据采用UTF8编码时才有效.
NSString *dbleStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
double dble = [dbleStr doubleValue];
Run Code Online (Sandbox Code Playgroud)
如果数据采用endian格式,请使用NSUTF16BigEndianStringEncoding,NSUTF16LittleEndianStringEncoding中的相应编码格式之一.
注意:数据应包含double值.否则你会得到意想不到的结果.
| 归档时间: |
|
| 查看次数: |
3113 次 |
| 最近记录: |