mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-23 20:59:30 +08:00
Added functions to translate integers to/from byte streams.
This commit is contained in:
@@ -89,4 +89,136 @@ static inline uint16_t htons( uint16_t _x )
|
||||
#error "Unknown endian-ness for this cpu"
|
||||
#endif
|
||||
|
||||
static inline uint16_t rtems_uint16_from_little_endian( const uint8_t *data)
|
||||
{
|
||||
uint16_t value = 0;
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 1; i >= 0; --i) {
|
||||
value = (uint16_t) ((value << 8) + data [i]);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 3; i >= 0; --i) {
|
||||
value = (value << 8) + data [i];
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline uint64_t rtems_uint64_from_little_endian( const uint8_t *data)
|
||||
{
|
||||
uint64_t value = 0;
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 7; i >= 0; --i) {
|
||||
value = (value << 8) + (uint64_t) data [i];
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline uint16_t rtems_uint16_from_big_endian( const uint8_t *data)
|
||||
{
|
||||
uint16_t value = 0;
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 2; ++i) {
|
||||
value = (uint16_t) ((value << 8) + data [i]);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline uint32_t rtems_uint32_from_big_endian( const uint8_t *data)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 4; ++i) {
|
||||
value = (value << 8) + (uint32_t) data [i];
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline uint64_t rtems_uint64_from_big_endian( const uint8_t *data)
|
||||
{
|
||||
uint64_t value = 0;
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 8; ++i) {
|
||||
value = (value << 8) + (uint64_t) data [i];
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static inline void rtems_uint16_to_little_endian( uint16_t value, uint8_t *data)
|
||||
{
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 2; ++i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
|
||||
{
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 4; ++i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rtems_uint64_to_little_endian( uint64_t value, uint8_t *data)
|
||||
{
|
||||
size_t i = 0;
|
||||
|
||||
for (i = 0; i < 8; ++i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rtems_uint16_to_big_endian( uint16_t value, uint8_t *data)
|
||||
{
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 1; i >= 0; --i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rtems_uint32_to_big_endian( uint32_t value, uint8_t *data)
|
||||
{
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 3; i >= 0; --i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void rtems_uint64_to_big_endian( uint64_t value, uint8_t *data)
|
||||
{
|
||||
ssize_t i = 0;
|
||||
|
||||
for (i = 7; i >= 0; --i) {
|
||||
data [i] = (uint8_t) value;
|
||||
value >>= 8;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* _RTEMS_ENDIAN_H */
|
||||
|
||||
Reference in New Issue
Block a user