#include <stdio.h> #include <stdint.h> typedef union{ struct{ uint16_t value_adc : 12; uint16_t adc_channel : 4; }Field; uint16_t register_adc; }Reg_Adc; void extract_reg_adc(Reg_Adc *adc){ printf("Channel: %hu\n", adc->Field.adc_channel); printf("ADC Value: %hu", adc->Field.value_adc); } int main(){ Reg_Adc adc; scanf("%hx", &adc.register_adc); extract_reg_adc(&adc); return 0; }
Test Cases
Test Results
Input
0xC3F5
Expected Output
Channel: 12 ADC Value: 1013