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

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

------解决方案--------------------
十六进制转十进制,算法比较垃圾...
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);
}
我写的,比较基础,希望对你有帮助。我写了任意进制的转换,需要看的话我可以贴上来。