帮忙写个十进制和十六进制互相转换的程序,该如何解决
帮忙写个十进制和十六进制互相转换的程序
暂时性没有思路.
哪位大侠给个代码
------解决方案--------------------
十六进制转十进制,算法比较垃圾...
暂时性没有思路.
哪位大侠给个代码
------解决方案--------------------
十六进制转十进制,算法比较垃圾...
- 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);
}
我写的,比较基础,希望对你有帮助。我写了任意进制的转换,需要看的话我可以贴上来。