Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>

const char *str[] = {"Power On", "Error", "Tx Ready", "Rx Ready", "Overheat", "Undervoltage", "Timeout", "Reserved" };

void decode_status(uint8_t status_reg) {
    // Your logic here
    uint8_t pos = 0;
    while(pos < 8){
        if( status_reg & (1 << pos))
            printf("%s\n", str[pos]);
        pos++;
    }
}

int main() {
    uint8_t reg;
    scanf("%hhu", &reg);
    decode_status(reg);
    return 0;
}

Solving Approach

Create an array of strings. If the bit position is set, print the corresponding string from array.

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready