// Umwandlung Big Endian / Little Endian mit Bitoperationen
//
// Aufruf: endian n
//
// Klaus Kusche, 2010

#include <stdio.h>
#include <stdlib.h>

int main(int argc, const char *argv[])
{
  if (argc != 2) {
    fprintf(stderr, "Aufruf: %s n\n", argv[0]);
    exit(EXIT_FAILURE);
  }

  // bei normalem "int" könnte es Überraschungen bei >> geben! 
  unsigned int original = atoi(argv[1]);

  unsigned int reverse = (original << 24) |
                         ((original & 0x0000ff00) << 8) |
                         ((original & 0x00ff0000) >> 8) |
                         (original >> 24);

  printf("Original: %08x, Bytes swapped: %08x\n", original, reverse);

  exit(EXIT_SUCCESS);
}
