C/C++: Change position of bytes 1 and 2 with bytes 3 and 4 in a 32bit unsigned integer
The following function will produce a new 32bit
value where bytes 1
and 2
were moved in place of bytes 3
and 4
and vice versa.
[download id=”3642″]
#include <stdio.h> #include <stdlib.h> const unsigned int move_bytes_1_2_after_4 (const unsigned int input) { //We get the two leftmost bytes and move them to the positions of the two rightmost bytes. const unsigned int first_two_bytes = (input >> 16) & 0x0000FFFF; //We get the two rightmost bytes and move them to the positions of the two leftmost bytes. const unsigned int last_two_bytes = (input << 16) & 0xFFFF0000; //We combine the two temporary values together to produce the new 32bit value where bytes 1 and 2 were moved in place of bytes 3 and 4 and vice versa. return (first_two_bytes | last_two_bytes); } int main(void) { const unsigned int value = 0xABCD0123; printf ("Original: 0x%08x\n", value); const unsigned int modified = move_bytes_1_2_after_4(value); printf ("Modified: 0x%08x\n", modified); return EXIT_SUCCESS; }
Executing the above code will produce the following output:
Original: 0xabcd0123 Modified: 0x0123abcd
[download id=”3642″]