Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:将表示数字位的整数数组转换为单个整数?_C_Arrays_Integer - Fatal编程技术网

C:将表示数字位的整数数组转换为单个整数?

C:将表示数字位的整数数组转换为单个整数?,c,arrays,integer,C,Arrays,Integer,我是C语言的初学者,希望知道如何将表示数字位的数字数组转换为它所表示的整数 我在网上搜索了一下,但只找到了指向int的字符数组 我正在制作转换器,需要int array将位值从1切换到0,反之亦然(即二进制)。到目前为止,我已经设法使数组整数切换,但我不知道如何将数字数组更改为该数组表示的单个数字。我需要这个整数,这样我就可以把它转换成十进制数,用户可以查看 有什么简单的解决办法吗 bin=存储二进制数的整数变量 arrbin=存储位ie(00000000)状态的整数数组 (i=0;i

我是C语言的初学者,希望知道如何将表示数字位的数字数组转换为它所表示的整数

我在网上搜索了一下,但只找到了指向int的字符数组

我正在制作转换器,需要int array将位值从1切换到0,反之亦然(即二进制)。到目前为止,我已经设法使数组整数切换,但我不知道如何将数字数组更改为该数组表示的单个数字。我需要这个整数,这样我就可以把它转换成十进制数,用户可以查看

有什么简单的解决办法吗

bin=存储二进制数的整数变量

arrbin=存储位ie(00000000)状态的整数数组

(i=0;i<8;++i)的

{
bin=bin+(10*arrbin[i]);
}
编辑:我想我现在看到了问题所在,不是每个指数都执行10以上的值,而是将数字乘以10。我会试试看这是否能解决问题


编辑#2:我不是说二进制到十进制的转换。我的意思是将数字数组{1,0,0,0,0,0,1)转换为整数(整数变量=10000001而不是129)

手动操作如何,就像使用2的幂将二进制转换为int一样

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

main()
{
   int arr[4]={1,0,0,1};
   int i;
   int output=0, power=1;
   for (i=0; i<4; i++)
   {

       output += arr[3-i]*power;
       power *= 2;
   }

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

您忘记了,将值乘以10,二进制是行不通的,但是乘以2(如果您将十进制数转换为整数,那么乘以10会很好,但是已经有了相应的函数)

因此,如果我使用您的代码并应用适当的乘法:

for (bin = 0, i = 0; i < 8; ++i )
{
    bin *= 2;
    bin = bin + arrbin[i];
}
for(bin=0,i=0;i<8;++i)
{
bin*=2;
bin=bin+arrbin[i];
}

您可以使用位移位代替将
bin
的值乘以2(将
bin*=2;
替换为
bin=bin您基本上得到了答案,但最好从另一个方向执行,即:

int multiplier = 1;
for (i = 7; i >= 0; --i )
{
    bin += (multiplier * arrbin[i]);
    multiplier *= 10;
}

通过这种方式,您可以轻松更改正在使用的数组的长度。

是否有任何示例输入和输出?也请发布您的代码,即使它不起作用。向我们展示了您已经尝试过的内容。对于未来的访问者:将0x81存储为10000001是一项有趣的任务,但对于任何实际使用也毫无用处。您无法对其进行数学运算,它是c即使是
短整数也不能存储(最小16位)值,您所能做的就是将其转换为字符串,并且直接从
arrbin
转换为字符串要比使用这种十进制编码的二进制表示法容易得多。哦,好吧,我现在明白了。我只看了上面的答案,认为它是正确的。虽然我确实在副本上找到了第一个答案,但更容易理解。现在我意识到这也是正确的答案apologizes@user3682308如果回答了你的问题,你能把答案标记为正确吗。
for (bin = 0, i = 0; i < 8; ++i )
{
    bin *= 2;
    bin = bin + arrbin[i];
}
int multiplier = 1;
for (i = 7; i >= 0; --i )
{
    bin += (multiplier * arrbin[i]);
    multiplier *= 10;
}