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