诛仙3九晶任务:怎样才能把一个十六进制(八进制)的数转换成我们熟悉的十进制数?

来源:百度文库 编辑:高校问答 时间:2024/04/28 03:12:35
麻烦举例说明,我这个人笨!帮帮忙啦,很烦阿!
xzp1984,你好!目前对你的答案感到最满意,不过在麻烦你一下,怎么把一个十进制转换成十六进制(八进制、二进制)的数呢?比如:十进制的199771

十六:12345 == 十:1*16^4+2*16^3+3*16^2+4*16+5
八: 12345 == 十: 1*8^4+2*8^3+3*8^2+4*8+5

十进制转二进制会算吗?就是用短除法

十转十六可以先把十进制转为二进制,然后再从右向左4位一组将其中的二进制数直接转换位10进制就可以了(当然10-15要用A-F表示)

十转八的方法也类似,只不过是3位一组罢了

还有什么不明白的直接给我发消息就可以了~

举个例子〖仅供参考〗
八进制→十进制
变通的转化方法:
main()
{
char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='\0')
{n=n*8+*p-'0'; p++;}
printf("%d",n);
getch();
}
十六进制的转化类似,当然也可以用格式字符来完成转化。e.g.
#include <stdio.h>
main()
{
int a;
printf("\nInput a=");
scanf("%o",&a); //注意这里输入八进制数时不要有前缀‘0’,相应的%#o则需要输入前缀。
printf("a=%d",a);
getch();
}
或者用数据结构的知识,e.g.堆栈的方法来进行转化,这里不多说了。自己看书。
楼上的方法也不错,省时省力呵呵。

n位的k进制数a(1)a(2)a(3)...a(n)转换成10进制数的方法是:

10进制数=a(1)*k^(n-1)+a(2)*k^(n-2)+....+a(n-1)*k^1+a(n)*k^0

其中,a(1)代表k进制数的左边第一位,a(2)表示左边第二位,以此类推,a(n)表示右边第一位。^表示幂,k^n表示k的n次幂。

例如:
十六进制的3E7,共3位数字,转成10进制数为:
3*16^2+14*16^1+7*16^0=3*256+14*16+7=999
(十六进制中,A,B,C,D,E,F分别代表10,11,12,13,14,15)

八进制的43,共2位数字,转成10进制数为:
4*8^1+3*8^0=4*8+3=35

用每一位的十六进制数(八进制数)乘以该位的权值,例如:
十六进制数:14AD.1C=1*16^3+4*16^2+10*16^1+13*16^0+1*16^(-1)+12*16(-2),八进制数只是权值不同而已,对应的八进制数的权值为8^n.

用windows自带的计算器里面的科学型

先点十六(八)进制输入十六进制(八进制)的数,再点十进制...就能自己转换了

我有任意进制之间转换的函数 可给我发信daozhengwu@gmail.com