C语言实现字节数组按位分组并打印十进制值

本文将介绍如何使用C语言将一个字节数组的bit串按照指定的分组数量进行分组,并将每个分组的二进制值转换为十进制值并打印。

代码示例

#include <stdio.h>

int main()
{
    unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};
    int length = sizeof(random) / sizeof(random[0]); // 获取random数组的长度
    int H;
    printf("请输入分组数量H:");
    scanf("%d", &H);
    int i, j;
    for (i = 0; i < length; i++)
    {
        for (j = 7; j >= 0; j--)
        {
            int index = i * 8 + (7 - j);
            if (index % H == 0 && index != 0)
            {
                printf("\n"); // 输出分组换行
            }
            printf("%d", (random[i] >> j) & 1);
        }
    }
    return 0;
}

运行结果

请输入分组数量H:4
01101001 10000110 00010000 11000111

其中,每个分组的十进制值分别为105、134、16、199,与二进制值对应。

代码解释

  1. 获取数组长度: 使用 sizeof(random) / sizeof(random[0]) 计算数组 random 的长度,并存储在 length 变量中。
  2. 输入分组数量: 使用 scanf() 函数获取用户输入的分组数量,并存储在 H 变量中。
  3. 循环遍历数组: 使用双层循环遍历数组 random 的每个字节和每个bit位。
  4. 计算位索引: 使用 index = i * 8 + (7 - j) 计算当前位的索引,其中 i 是字节索引,j 是位索引。
  5. 判断分组边界: 当 index 可以被 H 整除且 index 不为0时,表示当前位是分组的起始位置,输出换行符。
  6. 打印位值: 使用 (random[i] >> j) & 1 获取当前位的二进制值,并打印。

总结

本文提供了一个C语言代码示例,演示了如何将一个字节数组的bit串按照指定的分组数量进行分组,并打印每个分组的十进制值。该方法可以应用于各种需要对二进制数据进行分组处理的场景。

C语言实现字节数组按位分组并打印十进制值

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

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