Challenge: Set Integer Bytes
Test your knowledge by solving this coding challenge.
We'll cover the following
The reverseBytes
function
The input is an unsigned integer, and you must reverse the order of its bytes.
To understand this, let’s assume the input is in hex. The beauty of the hexadecimal system is that we can view the bytes individually as opposed to the decimal system.
For example, if we take the number 3735928559
, we can’t know the value of each of the 4 bytes just by looking at the number.
We could convert it into binary, but this still requires one extra operation, and binary is a bit hard to read.
Let’s use base 16 or hex. Its value is DEADBEEF
or 0xDEADBEEF
, which you can obtain with a calculator.
The 0x
is a prefix to signify that the number is in hex. It isn’t part of the actual number.
The beauty of hex is that each digit or letter represents 4 bits, so two digits or letters together occupy 8 bits or 1 byte.
To clarify, in 0xDEADBEEF
:
- The first byte is
DE
- The second byte is
AD
- The third byte is
BE
- The fourth byte is
EF
If we convert the number in binary, split the bits into bytes, and then convert each byte to decimal, we’d get the same value as if we convert the above hex bytes in decimal.
Input and output
Input: x = 0xDEADBEEF;
Output: x = 0xEFBEADDE;
The bytes of the input are DE
, AD
, BE
, and EF
. If we reverse the bytes, we get EF
, BE
, AD
, DE
, or 0xEFBEADDE
.
We can use printf to print numbers in hex if we use the %x
specifier instead of %d
or %u
.
Coding challenge
Complete the reverseBytes
function. It will receive a pointer to an unsigned int
. You should modify the unsigned integer in place.
Get hands-on with 1400+ tech skills courses.