C语言输入一组字节数组数组按每3比特分组不足的情况下由下一字节补全按3比特遍历数组打印每一分组的比特
实现代码如下:
#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
``
原文地址: https://www.cveoy.top/t/topic/cTtQ 著作权归作者所有。请勿转载和采集!