C语言输入一个bit数字和字节数组按bit数遍历字节数组
以下是一个示例代码,可以实现输入一个bit数字和字节数组,按bit数遍历字节数组:
#include <stdio.h>
int main() {
int bit;
printf("请输入bit数字:");
scanf("%d", &bit);
unsigned char arr[] = {0x12, 0x34, 0x56, 0x78};
int byte = bit / 8; // 先计算出字节数
int bitOffset = bit % 8; // 计算出在字节中的偏移量
for (int i = 0; i <= byte; i++) {
unsigned char b = arr[i];
if (i == byte) {
// 如果是最后一个字节,只需要遍历到 bitOffset
for (int j = 0; j < bitOffset; j++) {
printf("%d", (b >> (7-j)) & 0x1);
}
} else {
// 如果不是最后一个字节,需要遍历整个字节
for (int j = 0; j < 8; j++) {
printf("%d", (b >> (7-j)) & 0x1);
}
}
}
printf("\n");
return 0;
}
示例输入:
请输入bit数字:18
示例输出:
000100100011010001
上面的代码假设输入的 bit 数字不超过总字节数的 bit 数,如果超过了需要加入相应的错误处理逻辑
原文地址: https://www.cveoy.top/t/topic/cPrv 著作权归作者所有。请勿转载和采集!