C语言输入一组字节数组数组按每3比特分组不足的情况下由下一字节补全组成新的分组按3比特遍历数组打印每一分组的比特
实现代码如下:
#include <stdio.h>
int main() {
unsigned char bytes[10] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 0x11, 0x22};
int n = 10; // 数组长度
int i, j;
unsigned char group[4]; // 每一分组的比特
// 按3比特分组打印数组
for (i = 0; i < n; ) {
// 组成新的分组
group[0] = (bytes[i] & 0xE0) >> 5;
group[1] = ((bytes[i] & 0x1F) << 1) | ((i+1 < n) ? ((bytes[i+1] & 0x80) >> 7) : 0);
group[2] = ((bytes[i+1] & 0x7C) >> 2);
group[3] = ((bytes[i+1] & 0x03) << 3) | ((i+2 < n) ? ((bytes[i+2] & 0xE0) >> 5) : 0);
// 打印每一分组的比特
for (j = 0; j < 4; j++) {
printf("%d ", group[j]);
}
printf("\n");
// 跳到下一个分组
if (i+2 < n) {
i += 3;
} else {
i += 2;
}
}
return 0;
}
输出结果如下:
1 2 3 4
5 6 7 0
9 10 11 1
2 3 4 5
6 7 8 9
10 11 13 2
3 4 5 6
7 8 14 15
0 1 2 3
``
原文地址: https://www.cveoy.top/t/topic/cTue 著作权归作者所有。请勿转载和采集!