将数组中保存的十进制数转换为数组中保存的二进制数,反之亦然

问题描述 投票:0回答:1

我一直在研究将十进制数转换为二进制数的方法。但是在示例中,我发现要转换的十进制数不在数组内。例如:

void decToBinary(int n) 
{ 
    // array to store binary number 
    int binaryNum[32]; 

    // counter for binary array 
    int i = 0; 
    while (n > 0) { 

        // storing remainder in binary array 
        binaryNum[i] = n % 2; 
        n = n / 2; 
        i++; 
    } 
}

但是,对于我来说,我有一个十进制数保存在数组uint8_t *中(随机生成),如何将其传递给保存在数组中的二进制数?然后,如何将其传递回保存在数组中的十进制数字?

c arrays binary decimal
1个回答
0
投票

您应该返回binaryNum,因为它是局部变量。但是首先,您必须将数组还原为确切的二进制数:

int * returArray;
returArray = malloc(sizeof(int) * i);

for(int j = i - 1, k = 0; j >= 0; j--, k++) {
    returArray[j] = binaryNum[k];
}

该功能变为:

int * decToBinary(int n, int *size) 
{ 
    // array to store binary number 
    int binaryNum[32];
    int * returArray;

    // counter for binary array 
    int i = 0; 
    while (n > 0) { 

        // storing remainder in binary array 
        binaryNum[i] = n % 2; 
        n = n / 2; 
        i++; 
    } 

    returArray = malloc(sizeof(int) * i);

    for(int j = i - 1, k = 0; j >= 0; j--, k++) {
        returArray[j] = binaryNum[k];
    }
    *size = i;
    return returArray;
}

size值是二进制数组的大小。

主要测试对象:

int main(void) {
    int size;
    int * a = decToBinary(25, &size);
    printf("size = %d\n", size);
    for (int i = 0; i < size; ++i)
    {
        printf("%d", a[i]);
    }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.