Мне сложно разбирать Midi Packets. Время от времени его 3 байта, тогда это может быть 155 байт в одном потоке. Как я могу перебирать массивный пакет и просто получать то, что мне нужно? Скажите «b0» только 3 байта из 12 байтового пакета, я просто хочу разделить «b0» и его следующие байты: [b02c2c], затем остальные [b02c2d] или [f0 ....] в том же пакет ...Parse Midi Packet в iOS
Вот что я работаю, и дает мне головную боль ..
NSString *StringFromPacket(const MIDIPacket *packet,id self)
{
NSMutableString * result = [[NSMutableString alloc] init];
for (int i = 0; i < packet->length; i++)
{
NSString *s = [NSString stringWithFormat:@"%02x",packet->data[i]];
for (NSString *line in [s componentsSeparatedByString:@"b0"])
{
// This appends to string but b0 disappears and only get the following 2 bytes
// Along with the others like f0,a0,90. I would like to filter without losing b0
[result appendFormat:line];
}
}
[self controlEvent:result];
}
-(void)controlEvent:(NSString *)line
{
if (line == @"b02c2c")
{
//Do Something
}
}
Я смущен вашим вопросом и кодом - можете ли вы показать несколько MIDI-пакетов и какие манипуляции вы хотите сделать на них? – sarnold
Не используйте сопоставление строк для разбора двоичных данных. Перед использованием убедитесь, что вы полностью понимаете формат данных MIDI. – Till
Я бы получил в основном такой пакет: 18 байт: [b0,0c, 0e, b0,2c, 05, b0,0c, 0f, b0,2c, 02, b0,0c, 0d, b0,2c, 02 ] Как я могу отделить их на 3 байта, а затем отправить методу? – Cocell