1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include <unistd.h> void swab(const void *restrict src, void *restrict dest, ssize_t nbytes) { const char *s = src; char *d = dest; if (nbytes <= 0) return; ssize_t n = nbytes & ~1; for (ssize_t i = 0; i < n; i += 2) { d[i] = s[i + 1]; d[i + 1] = s[i]; } }