c语言如何将只含0和1元素的数组按原先顺序转化成二进制数据

如数组a[8]={1,0,1,0,0,1,1,0},如何将其转化为二进制数据1010 0110保存

提供参考实例方法,链接:https://blog.csdn.net/weixin_38314865/article/details/113776755

要求说的不太清楚,你希望是转换成二进制整数10100110,也就是166呢?还是整数值就是10100110,还是字符串"10100110"???
设s=0,循环8次运行s=s*10+a[i];

ChatGPT尝试为您解答,仅供参考
您可以使用如下代码来将数组 a 中的元素转换为二进制数据并保存:

#include <stdio.h>
#include <string.h>

int main(void) {
    int a[8] = {1, 0, 1, 0, 0, 1, 1, 0};
    char binary[9];  // 用于存储二进制数据的字符数组
    memset(binary, 0, sizeof(binary));  // 将 binary 数组初始化为 0

    // 遍历 a 数组中的每个元素,并将其转换为二进制字符
    for (int i = 0; i < 8; i++) {
        binary[i] = (a[i] == 1) ? '1' : '0';
    }
    
    // 将二进制数据分成两部分,分别为 "1010" 和 "0110"
    char binary1[5], binary2[5];
    strncpy(binary1, binary, 4);
    strncpy(binary2, binary + 4, 4);

    // 打印二进制数据
    printf("Binary data: %s %s\n", binary1, binary2);

    return 0;
}

编译并运行上述代码后,将输出 "Binary data: 1010 0110"。

#include <stdio.h>

int main(){
    int a[8] = {1,0,1,0,0,1,1,0};
    int b = 0;
    int c = 0b10100110;
    for(int i = 0; i < 8; i++)b |= (a[i] << (7 - i));
    printf("b=%d c=%d\n", (int)b, (int)c);
    return 0;
}
int a[8] = {1, 0, 1, 0, 0, 1, 1, 0};
int result = 0;
for (int i = 0; i < 8; i++) {
  if (a[i] == 1) {
    result |= (a[i] << i);
  }
}