我是 C 的初学者,想知道如何将表示数字位的数字数组转换为它所表示的整数。
我在网上搜索,但只找到 char 数组到 int。
我正在制作转换器并且需要 int 数组来将位值从 1 切换到 0,反之亦然(即二进制)。到目前为止,我已经设法使数组整数切换,但我无法弄清楚如何将数字数组更改为数组表示的单个数字。我需要这个整数,以便我可以将其转换为用户可以查看的十进制数。
有什么简单的解决方案吗?
bin= 存储二进制数的整数变量
arrbin = 存储位状态的整数数组 ie(00000000)
for (i = 0; i < 8; ++i )
{
bin = bin + (10 * arrbin[i]);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我想我现在看到了问题,而不是每个 10 的指数都实现值,数字只乘以 10。将尝试看看这是否能解决问题。
编辑#2:我不是指二进制到十进制的转换。我的意思是将数字数组即{1,0,0,0,0,0,0,1) 转换为整数(整数变量 = 10000001 不是 129)
你基本上有答案,但你最好从另一个方向去做,即:
int multiplier = 1;
for (i = 7; i >= 0; --i )
{
bin += (multiplier * arrbin[i]);
multiplier *= 10;
}
Run Code Online (Sandbox Code Playgroud)
这样您就可以轻松更改正在使用的数组的长度。
手动执行如何,与使用 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);
Run Code Online (Sandbox Code Playgroud)
在这个例子中
arr = 1 0 0 1
output = 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 = 9
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22024 次 |
| 最近记录: |