Полагаю, вы не понимаете tmp |=
, потому что это, вероятно, единственная часть кода, которую сложно понять. Если вы попытаетесь найти операторы C, вы найдете список здесь , теперь |=
означает «Побит или», вы можете узнать больше о них здесь .
Итак, что на самом деле делает этот код, так это то, что он требует некоторого ввода, вы указываете функции, где начинать чтение в «буфере» / «фрейме», и вы делаете побитовое или на столько позиций, сколько указано в параметре «размера».