我有一个字节数组(比如 UInt8 *somebuffer),其中的数据格式未知。我尝试转换为多种数据类型,但未能成功获取任何有意义的数据。我想做的是:
float *floatArray = somebuffer;
然后将内容作为 float 处理,我也尝试过其他一些,如 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];
最佳答案
是的,如果您转换为正确的格式,这就足够了。你的推理是正确的,但为了摆脱编译器警告,我会做一个转换,比如:
float <strong>floatArray = (float*</strong>)someBuffer;
关于c - 从 C 中的字节数组 (UInt8) 中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080790/