十六进制与十进制转换
十六进制和十进制相互转换...本人较笨...望大家回答的详细点...最好多点例题... :lol#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;
}
你给我写代码干什么...我要过程和算法 代码就是算法的直接实现啊,直接看代码应该比看算法还好些啊,自己觉得需要改进那自己就优化呗! 去四位数然然后乘以2的n次方 你可以这么想 我们一般用的是十进制 那么我们从0开始加,加到9就为一轮 再加就转轮10.11.12....就是把最右边的重新置0同时向(十位)坐左边进一 而16位的话abcdef代替10.11.12.13.14.15 到了十六再进 了解了之后那么进制转换也容易了你把 对应的位数乘上位值 的和就是数值了,再除以对应的进制是多少位的得出的就是了 举个栗子 32这个数(为十进制的)他最右边的数位(好像之前写反了?)为2左边的数位为32对应的数值为10的0次方即1 3对应的数值为10的1次方所以这个数字的值为32(因为我们默认的基数是10如果是16得出的是20) {:10_256:} wangyexin 发表于 2011-9-23 18:25
en
页:
[1]