我需要保存的地方,然后检索Sint16(2个字节)。
我明白了:
SInt16* frames = (SInt16*)inBuffer->mAudioData;
并希望保存&frames[i]
某处(NSMutableData?),以后可以轻松检索。我试图像这样保存(循环中):
[recordedData appendBytes:&frames[i] length:1];
并检索:
SInt16* framesRetrieve ;
//sets up mybytes buffer and reads in data from myData
framesRetrieve = (SInt16*)malloc([mutableData framesRetrieve]);
[mutableData getBytes:framesRetrieve];
但这种回归与我投入的不一样。
那么什么可以解决?
感谢。
答案 0 :(得分:1)
您需要知道数据的长度,然后您可以将整个缓冲区存储在NSMutableData
对象中:
存储:
SInt16 *frames = ...;
NSUInteger length = ...; // Assuming number of elements in frames, not bytes!
NSMutableData *data = [[NSMutableData alloc] initWithCapacity:0];
[data appendBytes:(const void *)frames length:length * sizeof(SInt16)];
要检索:
SInt16 *frames = (SInt16 *)[data bytes];
NSUInteger length = [data length] / sizeof(SInt16);
答案 1 :(得分:0)
您只从2字节变量复制一个字节。尝试立即将两个字节附加到NSMutableData。
[recordedData appendBytes: frames length:sizeof(SInt16)];