Здравствуйте, IROV.., Вы писали:
IRO>как правильней делать?
IRO>преобразовать к uint8_t * и свапнуть 0 и 2 элемент.
Это вряд ли хорошо, будут какие-нибудь пенальти за смены разрядности и работу с памятью...
Я бы по маске вырезал "неподвижную и "подвижную" части, и подвижной сделал бы rotl какой-нибудь интрисик-функцией...
А если компиллер интрисики не умеет эффективно, то что-то вроде
(x&0xFF00FF00)|((x&0x00FF0000)>>16)|((x&0x000000FF)<<16)
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском