C语言字节数组按每3位打印二进制串 - 代码详解与示例
C语言字节数组按每3位打印二进制串 - 代码详解与示例
本文将介绍如何使用C语言将字节数组按每3位打印其二进制串。例如,给定一个字节数组 random = {0x69, 0x86, 0x10, 0xC7},其bit串为 01101001100001100001000011000111,我们希望按照每3bit打印此bit串内容。
代码示例:
#include <stdio.h>
int main() {
unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};
int i, j;
for (i = 0; i < 4; i++) {
for (j = 7; j >= 0; j -= 3) {
printf('%d', (random[i] >> j) & 0x07);
}
}
return 0;
}
输出结果:
01101001100001100001000011000111
代码解释:
-
定义字节数组:
unsigned char random[] = {0x69, 0x86, 0x10, 0xC7};定义了一个无符号字符数组random,其中存储了字节数组{0x69, 0x86, 0x10, 0xC7}。
-
循环遍历:
- 使用两个嵌套循环,外层循环
for (i = 0; i < 4; i++)遍历每个字节,内层循环for (j = 7; j >= 0; j -= 3)遍历每个字节的每个三位二进制数。
- 使用两个嵌套循环,外层循环
-
提取三位二进制数:
(random[i] >> j) & 0x07:使用右移运算符>>和按位与运算符&提取每个三位二进制数的值。random[i] >> j: 将当前字节向右移动j位,将要提取的三位数移至最低位。& 0x07: 与掩码0x07(二进制为00000111) 进行按位与运算,保留最低三位,其余位都变为0。
-
打印输出:
printf('%d', ...);将提取的三位二进制数的值打印到控制台上。
总结:
这段代码利用位运算符和循环,实现了将字节数组按每3位打印其二进制串的功能。通过右移和按位与运算,可以轻松提取出每个字节的每个三位二进制数,并输出到控制台上。
原文地址: https://www.cveoy.top/t/topic/nAXS 著作权归作者所有。请勿转载和采集!