【请教八进制、16进制转换成十进制的算法,请举例说明】

作者:佚名    更新日期:2025-06-22
一个八进制数比如:123
转换为十进制就为:1*8^2+2*8^1+3*8^0
一个16进制的:123,转换为十进制就为:1*16^2+2*16^1+3*16^0
“^” 是多是次方的意思。。

十六进制转换为十进制:FFH-->15*16(0)+15*16(1)=255
DE--->14*16(0)+13*16(1)=222
八进制转换为十进制:67--->7*8(0)+6*8(1)=55
16(1)表示16的1次方

..........
那还不好算?
int get10(int A8)
{
int a=A8,r=1,a10=0;

while(a!=0)
{
a10+=(a%10)*r;
a/=10;
r*=8;
}

return a10;
}

#include "stdio.h"

void main()
{
int n;
scanf("%x",&n); //以十六进制形式接收输入的数
printf("%d\n",n);//以十进制形式输出数
}

#include <stdio.h>
void main()
{
int i,cmdo;
clrscr();
printf("1 Octal to Decimal\n");
printf("2 Hex to Decimal\n");
scanf("%d",&cmdo);
if(cmdo==1){
scanf("%o",&i);
printf("%d",i);
getch();
}
else{
scanf("%x",&i);
printf("%d",i);
getch();
}
}

十进制与八进制的转换和十进制与十六进制的转换规律,请详细并举例~

十进制转八进制,除八取余
十进制转十六进制,除十六取余
比方说:
十进制25转八进制除8,商3余1,得到的八进制就是31
同样转十六进制除16,商1余9,就是19

R进制(R为任何整数)转换为十进制的方法是:整数部分从小数点右往左依次按位乘以R的0次幂,R的1次幂,R的2次幂,......,小数部分从小数点后向右依次按位乘以R的-1次幂,R的-2次幂,R的-3次幂,......,将各位结果相加即可。
例如:
八进制转换为十进制方法是:整数部分从小数点右往左依次按位乘以8的0次幂,8的1次幂,8的2次幂,......,小数部分从小数点后向右依次按位乘以8的-1次幂,8的-2次幂,8的-3次幂,......,将各位结果相加即可。
(123.1)8=1×8^2+2×8^1+3×8^0+1×8^-1=64+16+3+0.125=(83.125)10

十六进制转换为十进制方法是:整数部分从小数点右往左依次按位乘以16的0次幂,16的1次幂,16的2次幂,......,小数部分从小数点后向右依次按位乘以16的-1次幂,16的-2次幂,16的-3次幂,......,将各位结果相加即可。
(123.1)16=1×16^2+2×16^1+3×16^0+1×16^-1=256+32+3+0.0625=(291.0625)10