Это не выполняет альфа-смешивание. Это просто объединяет альфа-компонент из двух пикселей. Это также, вероятно, примерно так же эффективно, как вы собираетесь получить, не переходя непосредственно к сборке. Если вы можете использовать указатели, вы можете получить немного быстрее, но:
byte* pa = (byte*)&a;
byte* pb = (byte*)&b;
byte* po = (byte*)&o;
po[3] = pa[3] * pb[3] >> 8;
Это экономит большую часть смены. Обратите внимание, что это подразумевает порядок байтов. Если вы работаете на процессоре с прямым порядком байтов, он становится еще лучше с:
*po = *pa * *pb >> 8;
В любом случае вы можете превратить это в однострочник, выполнив все операции приведения указателя в строке, но его становится немного трудно читать.
((byte*)&o)[3] = ((byte*)&a)[3] * ((byte*)&b)[3] >> 8;
или
*((byte*)&o) = *((byte*)&a) * *((byte*)&b) >> 8;