数组存放二进制,转十进制(C实现)

假设二进制:11010000,存放在数组a[] = {1,1,0,1,0,0,0,0}中,且这个二进制低位放在高位(暂理解为小端序),要将这个数组里的二进制转为十进制。实现如下:

#include 
#include 
#include 


int main() {
    char a[] = {1,1,0,1,0,0,0,0};
    char b[sizeof(a)];
    char c[sizeof(a)];
  
  /**** 数组b存放倒序排列的数组a ********/
    // 复制原始数组到新数组
    memcpy(b, a, sizeof(a));

    // 计算数组的中间位置
    int mid = sizeof(a) / 2;

    // 交换元素
    for (int i = 0; i < mid; i++) {
        char temp = b[i];
        b[i] = b[sizeof(a) - i - 1];
        b[sizeof(a) - i - 1] = temp;
    }

    // 打印结果
    for (int i = 0; i < sizeof(b); i++) {
        printf("%d", b[i]);
    }

   /**** 数组b元素转成十进制********/
    int decimal = 0;
    int size = sizeof(a) / sizeof(a[0]);

    for (int i = 0; i < size; i++) {
        decimal += b[i] * pow(2, size - i - 1);
    }
    printf("\n");
    printf("The decimal value of the binary array is %d\n", decimal);


    return 0;
}


你可能感兴趣的:(C,c语言)