As far as I can see, you are just doing basic math.
I have not programmed c for some time, so ignore any old terminology;
int original_number = 300;
char higher_char, lower_char;
higher_char = original_number / 256;
lower_char = original_number % 256;
and then just type upper_char and lower_char as usual.
[Edit
And to go back.
char higher_char, lower_char;
int number_to_restore;
number_to_restore = higher_char * 256 + lower_char;
]
Thus, using binary operators, this becomes:
int mask = 0xFF;
int original_number = 300;
char higher_char, lower_char;
higher_char = (original_number >> 8) & mask;
lower_char = original_number & mask;
and recovery
char higher_char, lower_char;
int number_to_restore;
number_to_restore = (higher_char << 8) | lower_char;
source
share