У меня есть байтовый массив (скажем, UInt8 * somebuffer) с данными в неизвестном формате. Я пробовал кастинг по нескольким типам данных и не добился успеха в получении каких-либо значимых данных. То, что я пытаюсь сделать, это что-то вроде:Получение значений из массива байтов (UInt8) в C
float * floatArray = somebuffer;
, а затем работать с содержимым как поплавок, и я также пробовал с несколькими другими, такими как int и double. Кастинг таким образом достаточен для доступа к данным, хранящимся как разные типы? Например, float будет индексом 0-3 в массиве байтов, но должен быть индексом 0 в массиве float, правильно?
Как в стороне это случается линейный 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];
подробнее необходимо: что бит глубина данных PCM, стерео/моно, или то, что вы пытаетесь делать? – user318904
PCM обычно использует целые числа 8/16/20/24 бит и не плавает и может быть сжатым в зависимости от формата. – uesp
Я указываю 16 бит, моно, 22000khz, но играл с этими настройками (я записываю с iPhone mic) и до сих пор не получаю резонансные данные. Я указываю данные float, но также попытался целое число. Данные Float указаны как -1 к 1, но все значения, которые я получаю, либо случайны, либо очень близки к 0 (т. Е. 0,00002, -0,00003) – John