#ifndef _USER_LIB_H_ #define _USER_LIB_H_ #include typedef union { float f; int32_t c; } float32_u; // 浮点数共用体 // uint32小端转大端 #define S2B_UINT32(a) \ (((uint32_t)(a) & 0xFF000000) >> 24) + (((uint32_t)(a) & 0x00FF0000) >> 8) + (((uint32_t)(a) & 0x0000FF00) << 8) + (((uint32_t)(a) & 0x000000FF) << 24) // uint32大端转小端 #define B2S_UINT32(a) S2B_UINT32(a) // uint16小端转大端 #define S2B_UINT16(a) ((((uint16_t)(a) & 0xFF00) >> 8) + (((uint16_t)(a) & 0x00FF) << 8)) // uint16大端转小端 #define B2S_UINT16(a) S2B_UINT16(a) #define BUILD_UINT16(loByte, hiByte) \ ((uint16_t)(((loByte) & 0x00FF) + (((hiByte) & 0x00FF) << 8))) // float32小端转大端 static inline float S2B_FLOAT32(float fv) { float32_u _f; _f.f = fv; _f.c = S2B_UINT32(_f.c); return _f.f; } // float32大端转小端 #define B2S_FLOAT32(a) S2B_FLOAT32(a) uint8_t xor_compute(const uint8_t *const data, uint16_t length); #endif