pointers-memory · beginner · ~15 min
Convert between Little-Endian and Big-Endian integer byte representations using byte pointer walking.
Network wire protocols transmit multi-byte integers in Big-Endian (network byte order), whereas modern CPU architectures (x86, ARM) represent integers in Little-Endian. Reversing byte order via byte pointer walking is a fundamental systems programming pattern.
Implement:
uint32_t swap_endian32(uint32_t val);
uint16_t swap_endian16(uint16_t val);
Reverse the order of bytes in 32-bit and 16-bit unsigned integers using byte pointer indexing.
swap_endian32(0x12345678); // returns 0x78563412
swap_endian16(0xABCD); // returns 0xCDAB
val: 32-bit or 16-bit unsigned integer.
Returns byte-swapped integer value.
C11 freestanding. Reorder bytes via pointer inspection or bitwise shifts.
#include <stdint.h>
/* Reverse byte order of 32-bit integer */
uint32_t swap_endian32(uint32_t val) {
(void)val;
return 0;
}
/* Reverse byte order of 16-bit integer */
uint16_t swap_endian16(uint16_t val) {
(void)val;
return 0;
}
Shifting signed char resulting in sign extension; byte order indexing confusion.
Symmetric values (e.g. 0x00000000 or 0xFFFFFFFF) remain identical; high bytes zero.
Solve this exercise in the browser editor — compile and run against the test harness, no setup required.