Browse Source

Added new union for u16/u8HL and u32/u16HL.

Vladimir N. Shilov 3 years ago
parent
commit
fa252548ef
1 changed files with 33 additions and 0 deletions
  1. 33 0
      C_unions_bits.txt

+ 33 - 0
C_unions_bits.txt

@@ -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;