我有一个字节数组(比如说,UInt8 * somebuffer),数据格式未知。我尝试过转换为几种数据类型,并且没有成功获取任何有意义的数据。我想要做的是:
float * floatArray = somebuffer;
然后将内容作为一个浮点数处理,我也尝试过其他一些例如int和double。以这种方式进行投射是否足以访问存储为不同类型的数据?例如,float在字节数组中是索引0-3但在float数组中应该是索引0,对吗?
顺便说一下,这恰好是线性PCM音频数据,这里是我用来生成PCM数据的设置(我试图从pcm数据中获取电平以生成波形):
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:22000.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[recordSetting setValue:[NSNumber numberWithInt:8] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:YES] forKey:AVLinearPCMIsFloatKey];
答案 0 :(得分:1)
是的,如果您使用正确的格式,这就足够了。你的推理是正确的,但是为了摆脱编译器警告,我会做一个演员,比如:
float floatArray = (float*)someBuffer;