#include <stdio.h> #include <stdint.h> // typedef union { // struct { // uint16_t adc_value : 12; // uint16_t channel : 4; // }; // uint16_t adc_reg; // } ADC_Result; typedef struct{ uint16_t val :12; uint16_t chan :4; }ADC_field_t; typedef union{ ADC_field_t field; uint16_t raw; } ADC_Result; int main() { uint16_t reg; scanf("%hx", ®); // Fill union and print channel and adc_value ADC_Result res; res.raw = reg; printf("Channel: %u\nADC Value: %u\n", res.field.chan, res.field.val); return 0; }
Test Cases
Test Results
Input
0xC3F5
Expected Output
Channel: 12 ADC Value: 1013