如数组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);
}
}