C语言:字节数组分组,按位分组并输出十进制值
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
代码解析
- 定义字节数组:
unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};定义了一个字节数组random,包含四个字节的值。 - 输入分组数目:
printf("请输入分组数目H:"); scanf("%d", &H);提示用户输入分组数目H。 - 输出二进制串:
for (i = 0; i < sizeof(random); i++) { ... }循环遍历每个字节,使用位运算>>和&输出每个字节的二进制串。 - 分组并输出十进制值:
for (i = 0; i < sizeof(random) * 8 / H; i++) { ... }循环遍历每个分组,使用位运算>>和&获取每个分组的二进制值,并将其转换为十进制值输出。
总结
本示例通过清晰的代码示例和运行结果展示了如何使用C语言进行字节数组的按位分组操作。该代码利用了位运算和循环遍历,实现了将字节数组按照指定位数进行分组,并输出每个分组的十进制值。希望本示例能帮助你更好地理解C语言的位操作和数据处理。
原文地址: https://www.cveoy.top/t/topic/nAYf 著作权归作者所有。请勿转载和采集!