u_long byterev_long (u_long L) { u_long mask = 0x0101010101010101; return (((L & (mask << 0)) << 7) | ((L >> 7) & (mask << 0)) | ((L & (mask << 1)) << 5) | ((L >> 5) & (mask << 1)) | ((L & (mask << 2)) << 3) | ((L >> 3) & (mask << 2)) | ((L & (mask << 3)) << 1) | ((L >> 1) & (mask << 3))); }