C语言:字节数组分组,按位分组并输出十进制值

本示例展示了如何使用C语言将给定的字节数组按照指定位数进行分组,并输出每个分组的十进制值。

代码示例

#include <stdio.h>

int main()
{
    unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};
    int H;
    printf("请输入分组数目H:");
    scanf("%d", &H);
    int i, j;
    for (i = 0; i < sizeof(random); i++)
    {
        for (j = 7; j >= 0; j--)
        {
            printf("%d", (random[i] >> j) & 0x1); // 输出每个字节的二进制串
        }
    }
    printf("\n");
    for (i = 0; i < sizeof(random) * 8 / H; i++)
    {
        int decimal = 0;
        for (j = 0; j < H; j++)
        {
            decimal = decimal * 2 + ((random[i * H / 8 + j / 8] >> (7 - j % 8)) & 0x1);
        }
        printf("%d ", decimal); // 输出每个分组的十进制值
    }
    printf("\n");
    return 0;
}

运行结果

请输入分组数目H:4
01101001011000011000010000110001111000110100000111000111
105 134 16 199

代码解析

  1. 定义字节数组: unsigned char random[] = {0x69, 0x86, 0x10, 0xC7}; 定义了一个字节数组random,包含四个字节的值。
  2. 输入分组数目: printf("请输入分组数目H:"); scanf("%d", &H); 提示用户输入分组数目H
  3. 输出二进制串: for (i = 0; i < sizeof(random); i++) { ... } 循环遍历每个字节,使用位运算>>& 输出每个字节的二进制串。
  4. 分组并输出十进制值: for (i = 0; i < sizeof(random) * 8 / H; i++) { ... } 循环遍历每个分组,使用位运算>>& 获取每个分组的二进制值,并将其转换为十进制值输出。

总结

本示例通过清晰的代码示例和运行结果展示了如何使用C语言进行字节数组的按位分组操作。该代码利用了位运算和循环遍历,实现了将字节数组按照指定位数进行分组,并输出每个分组的十进制值。希望本示例能帮助你更好地理解C语言的位操作和数据处理。

C语言:字节数组分组,按位分组并输出十进制值

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

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