Вообще проблем с int_16 нет, а вот с int_32 есть.
Вот так я делаю для int_16:
Код: Выделить всё
void reverse(unsigned short & x) {
x = ((x & 0x00FF00FF) << 8) | ((x & 0XFF00FF00) >> 8);
}А вот так для int_32:
Код: Выделить всё
void reverse(unsigned & x) {
x = ((x & 0x0000FFFF) << 16) | ((x & 0xFFFF0000) >> 16);
}Во результате в int_32 я получаю перевернутые два байта, т.е из:
0x06 00 00 00 - 0x00 00 06 00
А мне необходимо еще и байты в этих 2-х байтах реверсировать, чтобы получилось вот так: 0x00 00 00 06
Есть идеи, ссылки, пожелания? На мой взгляд будет неплохо использовать реверс int_16 т.е. short, но вот проблема, как разделить int_32 на два int_16? Конечно же бы хотелось оптимизировать этот момент очень хорошо, т.к. операции будут производится много раз.