Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <limits.h>
- // works for 8 bits
- unsigned swapnib8(unsigned n)
- {
- return (n << 4) & 0xFF | n >> 4;
- }
- unsigned swapnib(unsigned n)
- {
- if (n == 0) return n;
- unsigned lastbyte = swapnib8(n & 0xFF);
- unsigned rest = swapnib(n >> 8) << 8;
- return rest | lastbyte;
- /*
- printf("%x\n", n);
- return n ? (swapnib(n >> 8) << 8) | swapnib8(n & 0xff) : n;
- */
- }
- unsigned swapnib2(unsigned n)
- {
- unsigned r = 0;
- for (unsigned m4 = 0xF; m4; m4 <<= 4) {
- r |= ((n & m4) << 4);
- m4 <<= 4;
- r |= (n & m4) >> 4;
- }
- return r;
- }
- int main(void)
- {
- unsigned n = 0xdeadbeef;
- printf("%x %x\n", n, swapnib(n));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment