📄 sos_endian.h
字号:
/**
* The code is copied and modified from
* http://www.netrino.com/Publications/Glossary/Endianness.html
*
* Brown, Christopher and Michael Barr. "Introduction to Endianness"
* Embedded Systems Programming, January 2002 , pp. 55-56.
*
* NOTE: we choose to use little endian as the default because
* All of supported MCUs are little endian
*/
#ifndef _SOS_ENDIAN_H
#define _SOS_ENDIAN_H
#if defined(LLITTLE_ENDIAN) && !defined(BBIG_ENDIAN)
#define ehtons(X) (X)
#define ehtonl(X) (X)
#define entohs(X) (X)
#define entohl(X) (X)
#elif defined(BBIG_ENDIAN) && !defined(LLITTLE_ENDIAN)
#define ehtons(X) ((((uint16_t)(X) & 0xff00) >> 8) | \
(((uint16_t)(X) & 0x00ff) << 8))
#define ehtonl(X) ((((uint32_t)(X) & 0xff000000) >> 24) | \
(((uint32_t)(X) & 0x00ff0000) >> 8) | \
(((uint32_t)(X) & 0x0000ff00) << 8) | \
(((uint32_t)(X) & 0x000000ff) << 24))
#define entohs ehtons
#define entohl ehtonl
#elif defined(BBIG_ENDIAN) && defined(LLITTLE_ENDIAN)
#error "Either BBIG_ENDIAN or LLITTLE_ENDIAN must be #defined, but not both."
#else
#error "neither BBIG_ENDIAN nor LLITTLE_ENDIAN is defined."
#endif
#endif // ifndef _SOS_ENDIAN_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -