How to divide the high and low byte from a 16bit datatype into two variable in C

1 Answer

0 votes
#include <stdio.h>
 
typedef union {
    unsigned short u16; // uint16_t	0 .. 65,535
    unsigned char u8[2];
} U16_U8;


 
int main(void) {
    U16_U8 val;

    val.u16 = 13882; // 0011 0110 0011 1010 
                     // 0011 0110 = 54 
                               // 0011 1010 = 58

    unsigned char a = val.u8[0];
    unsigned char b = val.u8[1];
     
    printf("%d\n%d", a, b);
     
    return 0;
}
 
 
 
/*
run:

58
54
 
*/

 



answered Jan 27, 2025 by avibootz

Related questions

1 answer 96 views
2 answers 241 views
241 views asked Aug 30, 2016 by avibootz
1 answer 182 views
182 views asked Feb 26, 2016 by avibootz
...