在Objective C中将NSData转换为double数组

时间:2011-12-27 15:53:38

标签: iphone nsdata

我的iPhone应用程序中有一个音频文件,我将其转换为NSData对象。理想情况下,我想从音频文件中获取一系列双打。有没有办法将NSData转换为双精度数组?

以下是行NSLog(@"%@\n", data)的当前输出,其中data是音频文件的NSData对象:

<0000001c 66747970 6d703432 00000001 6d703431 6d703432 69736f6d 00000008 77696465 004d956e 6d646174 21000340 681c210c 53ed990c 1f33e94d ab588b95 55a61078 08799c67 f1f706cc 595b4eb6 08cfb807 ea0e3c40 03c13303 e674e05a...

1 个答案:

答案 0 :(得分:2)

-bytes方法返回NSData的原始字节。然后,您可以将其强制转换为指向double的指针(假设正确的字节顺序)。

const double* array_of_doubles = (const double*)[data bytes];
NSUInteger size_of_array = [data length] / sizeof(double);

编辑:数据是MP4文件。您无法直接将MP4转换为有意义的double数组。我不知道你想做什么,但也许AVAssetReader会有所帮助。