编辑代码

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


// 例子中的掩码:FF 01 00 00 C0 
uint8_t channel_mask[] = {0xFF, 0x01, 0x00, 0x00, 0xC0};

void reverse_bytes(uint8_t* arr, int len) {
    for (int i = 0; i < len / 2; ++i) {
        uint8_t tmp = arr[i];
        arr[i] = arr[len - 1 - i];
        arr[len - 1 - i] = tmp;
    }
}

int main() {
    //reverse_bytes(channel_mask, sizeof(channel_mask));
    for(uint8_t i = 0; i< 3; i++)
    {
        printf("%02x ", channel_mask[i]);
    }
    
    bool channel_enabled[sizeof(channel_mask) * 8];
    uint16_t total_channels = sizeof(channel_mask) * 8;
    printf("totoal %u\r\n", total_channels);
    for (int i = 0; i < total_channels; ++i) {
        int byte_index = i / 8;
        int bit_index = i % 8;
        bool is_disabled = (channel_mask[byte_index] >> bit_index) & 0x01;
        channel_enabled[i] = !is_disabled;  // 1 means disabled, so we invert
    }

    // 打印结果
    printf("Channel\tStatus\n");
    for (int i = 0; i < total_channels; ++i) {
        printf("%2d\t%s\n", i, channel_enabled[i] ? "ENABLED" : "DISABLED");
    }

    return 0;
}