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

代码解释:

  1. 定义字节数组:

    • unsigned char random[] = {0x69, 0x86, 0x10, 0xC7}; 定义了一个无符号字符数组 random,其中存储了字节数组 {0x69, 0x86, 0x10, 0xC7}
  2. 循环遍历:

    • 使用两个嵌套循环,外层循环 for (i = 0; i < 4; i++) 遍历每个字节,内层循环 for (j = 7; j >= 0; j -= 3) 遍历每个字节的每个三位二进制数。
  3. 提取三位二进制数:

    • (random[i] >> j) & 0x07:使用右移运算符 >> 和按位与运算符 & 提取每个三位二进制数的值。
      • random[i] >> j: 将当前字节向右移动 j 位,将要提取的三位数移至最低位。
      • & 0x07: 与掩码 0x07 (二进制为 00000111) 进行按位与运算,保留最低三位,其余位都变为0。
  4. 打印输出:

    • printf('%d', ...); 将提取的三位二进制数的值打印到控制台上。

总结:

这段代码利用位运算符和循环,实现了将字节数组按每3位打印其二进制串的功能。通过右移和按位与运算,可以轻松提取出每个字节的每个三位二进制数,并输出到控制台上。

C语言字节数组按每3位打印二进制串 - 代码详解与示例

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

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