首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙写个十进制和十六进制互相转换的程序,该如何解决

2012-04-05 
帮忙写个十进制和十六进制互相转换的程序暂时性没有思路.哪位大侠给个代码[解决办法]十六进制转十进制,算

帮忙写个十进制和十六进制互相转换的程序
暂时性没有思路.
哪位大侠给个代码

[解决办法]
十六进制转十进制,算法比较垃圾...

C/C++ code
#include <iostream>#include <math.h>using namespace std;const N=100;void main(){    char a[N]={0};    int b=0,i=N-1;    cin>>a;    while (a[i]==0)    {        i--;    }    int n=i;    for (;i>=0;i--)    {        if (a[i]>'0'&&a[i]<='9')        {            a[i]-=48;        }        else if (a[i]>='A'&&a[i]<='F')        {            a[i]-=55;        }        else if (a[i]>='a'&&a[i]<='f')        {            a[i]-=87;        }        else        {            cout<<"输入错误!"<<endl;            return;        }        b+=a[i]*pow(16,n-i);    }    cout<<b;    return ;}
[解决办法]
C/C++ code
#include<stdio.h>#define VALUE_TO_CHAR(v)    ((v) < 9 ? ('0' + (v)) : ((v) - 10 + 'A'))int main(){    int     num;    int     tmp;    char    chNum[11];    chNum[0] = '0';    chNum[1] = 'X';    chNum[10] = '\0';     printf("input your num: ");    scanf("%d", &num);    printf("\n");    for (int i = 7; i >= 0; i--)    {        tmp = ((num >> (i * 4)) & 0x0f);        chNum[9 - i] = VALUE_TO_CHAR(tmp);    }    printf("%s\n", chNum);    return 0;}
[解决办法]
#include<stdio.h>
#include<string.h>

void hex(char *s) //16进制转换为10进制
{
long t = 0;
int n = 16;

for(int i = 0;i < strlen(s);i ++)
{
if(s[i] >= 'A')
{
t = n*t + s[i]-'A'+10;
}
else
{
t = n*t + s[i]-'0';
}
}
printf("%ld\n",t);
}

void dec(char *s) //10进制转换为16进制
{
int n = 0, m = 16;
int a[100];

for(int i = 0;i < strlen(s);i ++)
{
n = 10*n + s[i]-'0';
}

for(i = 0;n > 0;i ++,n /= m)
{
if(n%m >= 10)
{
a[i] = n%m - 10 + 'A' ;
}
else
{
a[i] = n%m + '0';
}
}

for(int j = i-1;j >= 0;j --)
{
printf("%c",a[j]);
}
printf("\n");
}

void main()
{
char s[] = "1010";
dec(s);
hex(s);
}
我写的,比较基础,希望对你有帮助。我写了任意进制的转换,需要看的话我可以贴上来。

热点排行