C语言假如给一组字节数组为random=0x690x860x100xC7其bit串为01101001100001100001000011000111输入一个正整数H根据H将bit串分成N组并打印每一个分组的bit串
下面是一个可能的实现:
#include <stdio.h>
int main() {
unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};
int random_len = sizeof(random) / sizeof(random[0]);
char bit_str[8 * random_len + 1]; // 储存 bit 串的字符数组
for (int i = 0; i < random_len; i++) {
for (int j = 0; j < 8; j++) {
bit_str[i * 8 + j] = (random[i] & (1 << (7 - j))) ? '1' : '0';
}
}
bit_str[8 * random_len] = '\0'; // 字符串末尾加上 null 字符
int H;
printf("请输入一个正整数 H:");
scanf("%d", &H);
int N = (8 * random_len + H - 1) / H; // 计算分组数
printf("将 bit 串分成 %d 组:\n", N);
for (int i = 0; i < N; i++) {
printf("第 %d 组:", i + 1);
for (int j = 0; j < H && i * H + j < 8 * random_len; j++) {
printf("%c", bit_str[i * H + j]);
}
printf("\n");
}
return 0;
}
这个程序首先将字节数组中的每个字节转换成 8 位二进制数,并拼接成一个 bit 串。然后根据输入的正整数 H,计算出需要将 bit 串分成的组数 N。最后按照每组的长度 H 输出每一组的 bit 串。
例如,如果输入 H 为 6,那么输出的结果可能为:
请输入一个正整数 H:6
将 bit 串分成 48 组:
第 1 组:011010
第 2 组:011000
第 3 组:011000
第 4 组:010001
第 5 组:100011
...
``
原文地址: https://www.cveoy.top/t/topic/cTE9 著作权归作者所有。请勿转载和采集!