微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的函数只能自行将二进制转换为十进制,而不是在另一个函数中调用却不能转换?

如何解决为什么我的函数只能自行将二进制转换为十进制,而不是在另一个函数中调用却不能转换?

我正在编写一个程序,该程序调用一个函数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);
}

我的输出是这样的:

enter image description here

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。