В каком формате у вас есть ваши байты? Как составные буквы? Или байты являются частью, например, a uint32?
В общем, цикл - это лучший способ сделать это - даже если вы сможете применить шаблонную маску с memset, вам все равно нужно будет создать ее, и это займет столько же циклов ЦП.
Если бы у вас было 4 байта на элемент (например, uint32), вы могли бы сократить циклы процессора пополам, создав предопределенную маску для добавления. Но внимание: такое решение не будет проверять наличие переполнений (псевдокод):
uint32* ptr = new uint32[16]; // creates 64 bytes of data
(...) fill data
for (int k=0; k < 16; ++k)
{
// Hardcored Add-Mask for Little Endian systems
ptr[k] += 0x05000500; // dereference and add mask to content
}
Изменить: Обратите внимание, что это предполагает немного порядковый номер системы и псевдокод C ++.