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″]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #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″]
This post is also available in: Αγγλικα