programmer 发表于 2011-9-23 18:25:05

十六进制与十进制转换

十六进制和十进制相互转换...本人较笨...望大家回答的详细点...最好多点例题...  :lol 


wangyexin 发表于 2011-9-23 18:25:06

#include<iostream>
using namespace std;

void TenToSixteen(int n)
{
if(n==0)return ;
TenToSixteen(n/16);
char ch;
if(n%16<10)ch='0'+(n%16);
else ch='a'+(n%16)-10;
printf("%c",ch);
}

int SixteenToTen(char s[])
{
int len=strlen(s);
int t,n=0;
for( int i=0;i<len;i++)
{
if(s>='0'&&s<='9')t=s-'0';
else t=s-'a'+10;
n=n*16+t;
}
return n;
}

int main()
{
int n;
char s;
scanf("%d",&n);
TenToSixteen(n);
printf("\n");
scanf("%s",s);
printf("%d\n",SixteenToTen(s));
system("pause");
return 0;

}

programmer 发表于 2011-9-25 19:42:29

你给我写代码干什么...我要过程和算法

Y.H 发表于 2011-9-25 20:35:25

代码就是算法的直接实现啊,直接看代码应该比看算法还好些啊,自己觉得需要改进那自己就优化呗!

diyawei 发表于 2013-10-5 15:49:08

去四位数然然后乘以2的n次方

石头3494 发表于 2016-12-1 00:45:46

你可以这么想 我们一般用的是十进制 那么我们从0开始加,加到9就为一轮 再加就转轮10.11.12....就是把最右边的重新置0同时向(十位)坐左边进一   而16位的话abcdef代替10.11.12.13.14.15 到了十六再进

石头3494 发表于 2016-12-1 00:49:47

了解了之后那么进制转换也容易了你把    对应的位数乘上位值 的和就是数值了,再除以对应的进制是多少位的得出的就是了 举个栗子

石头3494 发表于 2016-12-1 00:58:12

32这个数(为十进制的)他最右边的数位(好像之前写反了?)为2左边的数位为32对应的数值为10的0次方即1   3对应的数值为10的1次方所以这个数字的值为32(因为我们默认的基数是10如果是16得出的是20)

e马先森 发表于 2017-2-16 13:12:27

{:10_256:}

向一朵朵鲜花 发表于 2017-2-16 16:02:38

wangyexin 发表于 2011-9-23 18:25


en
页: [1]
查看完整版本: 十六进制与十进制转换