下面是一个可能的实现:

#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
...
``
C语言假如给一组字节数组为random=0x690x860x100xC7其bit串为01101001100001100001000011000111输入一个正整数H根据H将bit串分成N组并打印每一个分组的bit串

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

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