|
@@ -125,3 +125,36 @@ Code:
|
|
|
|
|
|
только тут наверное младший байт без смещение (лежит первым), а старший
|
|
|
байт -- +1. И тогда это совпадёт с предыдущим примером.
|
|
|
+
|
|
|
+----------
|
|
|
+typedef union {
|
|
|
+ uint16_t u16; // element specifier for accessing whole u16
|
|
|
+ int16_t i16; // element specifier for accessing whole i16
|
|
|
+ struct {
|
|
|
+ #ifdef LITTLE_ENDIAN // Byte-order is little endian
|
|
|
+ uint8_t u8L; // element specifier for accessing low u8
|
|
|
+ uint8_t u8H; // element specifier for accessing high u8
|
|
|
+ #else // Byte-order is big endian
|
|
|
+ uint8_t u8H; // element specifier for accessing low u8
|
|
|
+ uint8_t u8L; // element specifier for accessing high u8
|
|
|
+ #endif
|
|
|
+ } s16; // element spec. for acc. struct with low or high u8
|
|
|
+} nt16_t;
|
|
|
+
|
|
|
+nt16_t a;
|
|
|
+a.u16 = 0x0123;
|
|
|
+a.s16.u8H == 0x01;
|
|
|
+
|
|
|
+typedef union {
|
|
|
+ uint32_t u32; // element specifier for accessing whole u32
|
|
|
+ int32_t i32; // element specifier for accessing whole i32
|
|
|
+ struct {
|
|
|
+ #ifdef LITTLE_ENDIAN // Byte-order is little endian
|
|
|
+ uint16_t u16L; // element specifier for accessing low u16
|
|
|
+ uint16_t u16H; // element specifier for accessing high u16
|
|
|
+ #else // Byte-order is big endian
|
|
|
+ uint16_t u16H; // element specifier for accessing low u16
|
|
|
+ uint16_t u16L; // element specifier for accessing high u16
|
|
|
+ #endif
|
|
|
+ } s32; // element spec. for acc. struct with low or high u16
|
|
|
+} nt32_t;
|