gpt4 book ai didi

在C中将二进制字符串转换为int

转载 作者:行者123 更新时间:2023-11-30 18:12:23 25 4
gpt4 key购买 nike

我正在用 C 语言将二进制字符串转换为 int。我编写了一段代码,它可以编译,但它没有执行我想要的操作,即将 16 位二进制字符串转换为 int。这是我的代码:

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

char input[16];
int result;
char c;
int i;
i = 0;
int count = 0;
int a = 1;

puts("Enter a 16-bit binary value to return its integer value");
while((c = getchar()) != '\n') {
input[i++];
}

for(count = strlen(input) - 1; count >=0; count--)
{
if(input[count] == '1')
{
result += a;
}
a <<= 1;
}
printf("The binary %s is integer %d", input, result);

return 0;

}

当我运行它时,它要求我输入一个 16 位二进制值。如果我输入“0000000000000010”,它会打印“二进制@@是整数2007885296”而不是2。我做错了什么?

我正在 Linux 服务器上通过 PuTTY.exe 编译并运行此代码,并在 vi 中编辑此代码,不确定这是否有任何区别。

感谢您的帮助!

最佳答案

以下代码干净地编译,工作正常,但不执行用户输入是否仅为 0 和 1 的验证。

#include <stdio.h>

#define BINARY_LEN (16)

int main( void )
{

char input[ BINARY_LEN+1 ] = {'\0'};
int c;
int i=0;

puts("Enter a 16-bit binary value to return its integer value\n");

// EDIT2: increase length to allow for trailing NUL byte
for( ; i<BINARY_LEN; i++)
{
if( (c = getchar()) != EOF && '\n' != c)
{
input[i] = (char)c;
}

else
{
break;
}
}

int result = 0;
for( int j=0; j<i; j++ )
{
// EDIT1: move shift statement to create proper result
result <<= 1;

if(input[j] == '1')
{
result |= 1;
}
}

printf("The binary %s is integer %d", input, result);

return 0;

}

这是代码运行的示例:

Enter a 16-bit binary value to return its integer value

101
The binary 101 is integer 5

Enter a 16-bit binary value to return its integer value

11000
The binary 11000 is integer 24

关于在C中将二进制字符串转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36229933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com