Swap d'octets 2 et 4 en un entier de 32 bits

J'ai eu cette question d'entrevue -

Swap d'octets 2 et octet 4 dans un entier de la séquence.
Integer est un 4 octet c'est à dire 32 bits

Mon approche a été d'utiliser char *pointer et un temp char pour échanger les octets.
Pour plus de clarté, j'ai cassé les étapes sinon, un tableau de caractères peut être considéré.

unsigned char *b2, *b4, tmpc;
int n = 0xABCD; ///expected output 0xADCB
b2 = &n;   b2++;  
b4 = &n;   b4 +=3;
///swap the values;
tmpc = *b2;
*b2 = *b4;
*b4 = tmpc;

Toutes les autres méthodes?

Je serais probablement utiliser logiques ET/OU/maj des trucs.
Avez-vous le travail?
Peut-être qu'ils n'aiment pas l'aliasing à travers incompatible types de pointeur.
0xABCD -> 0xADCB est un nybble échange, pas un octet de change, et le code donné ne sera pas l'appliquer.
vous ne pourrez pas obtenir le résultat souhaité avec ce code.

OriginalL'auteur czar x | 2013-07-01