八进制转换为十进制
代码一:
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char strHex[100];
int i = 0, len = 0, temp = 0;
__int64 nDec = 0;
gets(strHex);
len = strlen(strHex);
for (i = 0; strHex[i] != '\0'; ++i)
{
temp = strHex[i]-'0';
nDec += (temp*pow(8,len-1-i));
}
printf("%I64d",nDec);
return 0;
}
代码二:
#include <stdio.h>
main()
{
char *p,s[6];
int n;
p=s;
gets(p);
n=0;
while(*(p)!='\0')
{
n=n*8+*p-'0'; //n=n*8+*p-'0' ---> n=1*8+2 ---->n=(1*8+2)*8+3 展开得1*8^2 + 2*8^1+3=81
p++;
}
printf("%d",n);
}
代码一与代码二均为八进制转二进制,但代码一可表示的数据范围更广,但二者超过一定范围后都会越界,在一定范围内转换有效。代码一中long long类型,即__int64类型,请参考:点击打开链接