繁体   English   中英

将二进制格式的字符串转换为整数

[英]string in binary format to integer

我正在尝试将包含二进制的16位数字的字符串转换为整数值。 这是一项家庭作业,我必须使用scanf(“%1d ....)。我遇到的问题是循环不会结束,我不知道如何解决它。

例如:输入:0000000000001111
输出:15

int read_binary_value()
{ 
int value = 0;

while( scanf("%1d", &value) == 1) 
{
    printf("%d ", value);
    if (value == 1)
    {
        value += 1;
        value << 1;
    }

 }
 printf("yoyoyoyoyoyoyo");
 printf("%d",value);

 return value;
}

我修改了您的代码,它可以正常工作

int read_binary_value()
{
    int total=0;
    int value;
    while( scanf("%1d", &value) == 1)
    {
        printf("%d", value);
        if(!(value==0||value==1))
        {
            //Generate Error Message and Exit program
        }
        total = total << 1;
        if (value == 1)
        {
            total += 1;
        }

    }
    printf("yoyoyoyoyoyoyo\n");
    printf("%d",total);
    return total;
}

当文件结束时,循环停止。 对于Windows,请按CTRL + Z ,对于Linux,请按Ctrl + D 这些是文件结尾字符。

如果要获得16个输入,则可以使用for(i=0;i<16;i++)来代替, while只需要运行16次循环并结束。 否则在while循环中,您可以让if(i==16) break; 在循环结束时递增i 如果您需要手动停止循环,则可以选择EOF char。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM