首页 > 解决方案 > 为什么我的函数自己设法将二进制转换为十进制,但在另一个函数中调用时却没有?

问题描述

我正在编写一个调用函数 applyS() 的程序,该函数调用函数 binaryToDecimal(),它将填充 1 和 0 的 char[] 转换为整数。binaryToDecimal() 在我自己测试时有效。它在 applyS() 中获得的 char[] 正确填充了它应该具有的 1 和 0。尽管如此,binaryToDecimal() 只输出 0。仅在第一次转换中它输出 2,这仍然是不正确的。

binaryToDecimal() 看起来像这样:

void binaryToDecimal(char binary[], int *decimal, int binLength)
{
*decimal = 0;
for (int i = 0; i < binLength; i++)
{
    int currentPos = binLength - i - 1;
    if (binary[currentPos] == 0 || binary[currentPos] == 1)
    {
        *decimal += binary[currentPos]*pow(2,i);
    }
    else
    {
        printf("Illegal input. Can't convert to decimal.");
    }
}
}

applyS() 看起来像这样:

void applyS(char sTable[][16], char inputBlock[], char outputBlock[])
{
char splitBefore[8][6];
char splitAfter[8][4];

splitForS(inputBlock, splitBefore);

for (int i = 0; i < 8; i++)
{
    int rowArray[2];
    int row;
    int columnArray[4];
    int column;
    int newBlockDecimal;

    rowArray[0] = splitBefore[i][0];
    rowArray[1] = splitBefore[i][5];
    columnArray[0] = splitBefore[i][1];
    columnArray[1] = splitBefore[i][2];
    columnArray[2] = splitBefore[i][3];
    columnArray[3] = splitBefore[i][4];

    for (int j = 0; j < 2; j++)
    {
        printf("%d", rowArray[j]);
    }
    printf(" ");
    for (int j = 0; j < 4; j++)
    {
        printf("%d", columnArray[j]);
    }

    binaryToDecimal(rowArray, &row, 2);

    printf("\t%d ", row);

    binaryToDecimal(columnArray, &column, 4);

    printf("%d ", column);
    printf("\n");

    /*newBlockDecimal = sTable[row][column];

    decimalToBinary(newBlockDecimal, splitAfter[i], 4);*/
}
joinAfterS(splitAfter, outputBlock);
}

我的输出是这样的: 在此处输入图像描述

标签: cfunctionbinary

解决方案


感谢您的帮助,我发现了错误。在 applyS() rowArray[] 和 charArray[] 是整数数组,它们应该是字符数组。


推荐阅读