假设二进制:11010000,存放在数组a[] = {1,1,0,1,0,0,0,0}中,且这个二进制低位放在高位(暂理解为小端序),要将这个数组里的二进制转为十进制。实现如下:
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
-
-
- 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;
- }
-
-