Если я понял ваш вопрос, я думаю, что это то, что вам нужно:
byte mask = 0xFF;
for (int i = startPos-1; i < numBits; i++)
{
if ((newValue & (1 << i)) == 1)
{
mask = (byte)(mask | (1 << i));
}
else
{
mask = (byte)(mask &~(1<<i));
}
}
return (byte)(oldValue & mask);
Этот код основан на некоторых хитрых уловках из Низкоуровневые битовые хаки, которые вы обязательно должны знать
Я знаю, что установка бита в байте, инициализированном в 0xFF, на самом деле запрещена, но я чувствовал, что код следует оставить, поскольку он может помочь показать, что на самом деле происходит.Я призываю пользователей кода оптимизировать его по мере необходимости.