1 /////////////////////////////////////////////////////////////////////////////// 2 // 3 /// \file crc_macros.h 4 /// \brief Some endian-dependent macros for CRC32 and CRC64 5 // 6 // Author: Lasse Collin 7 // 8 // This file has been put into the public domain. 9 // You can do whatever you want with this file. 10 // 11 /////////////////////////////////////////////////////////////////////////////// 12 13 #ifdef WORDS_BIGENDIAN 14 # define A(x) ((x) >> 24) 15 # define B(x) (((x) >> 16) & 0xFF) 16 # define C(x) (((x) >> 8) & 0xFF) 17 # define D(x) ((x) & 0xFF) 18 19 # define S8(x) ((x) << 8) 20 # define S32(x) ((x) << 32) 21 22 #else 23 # define A(x) ((x) & 0xFF) 24 # define B(x) (((x) >> 8) & 0xFF) 25 # define C(x) (((x) >> 16) & 0xFF) 26 # define D(x) ((x) >> 24) 27 28 # define S8(x) ((x) >> 8) 29 # define S32(x) ((x) >> 32) 30 #endif 31