byteswap.h raw

   1  #ifndef _BYTESWAP_H
   2  #define _BYTESWAP_H
   3  
   4  #include <features.h>
   5  #include <stdint.h>
   6  
   7  static __inline uint16_t __bswap_16(uint16_t __x)
   8  {
   9  	return __x<<8 | __x>>8;
  10  }
  11  
  12  static __inline uint32_t __bswap_32(uint32_t __x)
  13  {
  14  	return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
  15  }
  16  
  17  static __inline uint64_t __bswap_64(uint64_t __x)
  18  {
  19  	return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
  20  }
  21  
  22  #define bswap_16(x) __bswap_16(x)
  23  #define bswap_32(x) __bswap_32(x)
  24  #define bswap_64(x) __bswap_64(x)
  25  
  26  #endif
  27