以下是一个示例代码,可以实现输入一个bit数字和字节数组,按bit数遍历字节数组:

#include <stdio.h>

int main() {
    int bit;
    printf("请输入bit数字:");
    scanf("%d", &bit);

    unsigned char arr[] = {0x12, 0x34, 0x56, 0x78};

    int byte = bit / 8; // 先计算出字节数
    int bitOffset = bit % 8; // 计算出在字节中的偏移量

    for (int i = 0; i <= byte; i++) {
        unsigned char b = arr[i];
        if (i == byte) {
            // 如果是最后一个字节,只需要遍历到 bitOffset
            for (int j = 0; j < bitOffset; j++) {
                printf("%d", (b >> (7-j)) & 0x1);
            }
        } else {
            // 如果不是最后一个字节,需要遍历整个字节
            for (int j = 0; j < 8; j++) {
                printf("%d", (b >> (7-j)) & 0x1);
            }
        }
    }

    printf("\n");
    return 0;
}

示例输入:

请输入bit数字:18

示例输出:

000100100011010001

上面的代码假设输入的 bit 数字不超过总字节数的 bit 数,如果超过了需要加入相应的错误处理逻辑

C语言输入一个bit数字和字节数组按bit数遍历字节数组

原文地址: https://www.cveoy.top/t/topic/cPrv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录