У меня есть буфер двоичных данных:
SInt16 *buffer = (SInt16 *)calloc(1024,sizeof(SInt16));
Я хочу обработать кусок данных за пределами этого буфера (например, 50 точек данных)
for(int i = 0; i < 50 ; ++i){
process_data(buffer[i])
}
Как только данные обработаны, они мне больше не нужны, поэтому я хочу отбросить их и поместить буфер указателя * в 51-ю точку данных.Тем не менее, мне все еще нужен буфер, чтобы указать на буфер, который имеет 1024 места в нем.Чтобы сделать это, я подумал, что сделаю это немного, потому что это достигнет моей цели и, насколько я знаю, быстро (я в теме с высоким приоритетом).Однако мне неясно, как битовое смещение работает с байтовыми массивами.
Во-первых, если я хочу сместить массив так, чтобы * buffer указывал на значение, ранее содержавшееся в buffer [50], это то, чтоСдвиг влево или вправо в C (Цель C)?
Во-вторых, если я смещу буфер, он сместит все 1024 точки данных или сместит только одну точку SInt16 в буфере [0]?
Идея заключается в том, что процессор будет считывать фрагменты с начала буфера и затем сигнализировать считывателю файлов в другом потоке, чтобы добавить новые данные в конец буфера.Если обработано 50 точек данных, то эти 50 точек отбрасываются, и программа чтения файлов добавляет 50 новых точек данных в конец байтового буфера.