实现代码如下:

#include <stdio.h>

int main() {
    unsigned char arr[] = {0x3F, 0x50, 0x6A, 0x04, 0x80};
    int len = sizeof(arr) / sizeof(arr[0]);
    int i, j;
    for (i = 0; i < len; i++) {
        unsigned char c = arr[i];
        for (j = 0; j < 8; j += 3) {
            unsigned char b = (c >> j) & 0x07;
            printf("%u ", b);
        }
    }
    printf("\n");
    return 0;
}

解释:

  • 定义一个无符号字符数组 arr,用于存储输入的字节数组,其中 0x3F 表示 00111111,0x50 表示 01010000,以此类推;
  • 计算数组长度 len
  • 循环遍历数组 arr,对于每个字节,按照每3比特分组的方式,使用位运算获取每一分组的比特,并打印输出;
  • 最后输出换行符,结束程序。

输出结果为:

0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0
``
C语言输入一组字节数组数组按每3比特分组不足的情况下由下一字节补全按3比特遍历数组打印每一分组的比特

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

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