64,676
社区成员
发帖
与我相关
我的任务
分享
#include<iostream.h>
#include<string>
class num{
public:
int f1(char *a);
void f2(int n);
void f3(int n1);
};
int num::f1(char *a){
/*16进制转换成10进制*/
int n=0;
for(int i=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
n=n*10+a[i]-'0';
if(a[i]>='a'&&a[i]<='z')
n=n*16+a[i]-'a'+10;
if(a[i]>='A'&&a[i]<='Z')
n=n*16+a[i]-'A'+10;
}
return n;
}
void num::f2(int n){
/*10进制转换成16进制*/
int len=0;
int t;
char b[50];
for(int k = 0; n != 0; k++)
{
t = n % 16;
if(t >= 0 && t < 10)
{
b[k] = t + '0';
}
else if(t >= 10 && t < 16)
{
b[k] = 'A' + t - 10;
}
len++;
n = n / 16;
}
for(int j = len - 1; j >= 0; j--)
{
cout<<b[j];
}
cout<<endl;
cout<<"len="<<len<<endl;
}
void num::f3(int n1){
//10进制转换成2进制
int c[50];
int len1=0;
int t,j;
for(int l = 0; n1 != 0; l++)
{
t = n1 % 2;
c[l]=t;
len1++;
n1 = n1 / 2;
}
for( j = len1 - 1; j >= 0; j--)
{
cout<<c[j];
}
cout<<endl;
cout<<"len1="<<len1<<endl;
}
void main()
{
num n;
int m;
char a1[20];
cin>>a1;
m = n.f1(a1);
n.f2(m);
n.f3(m);
}
#include <iostream>
using namespace std;
class A
{
public:
static int _16To10(char* a, int len);
static void _10To16(int n, char* b);
};
int A::_16To10(char* a, int len)
{
int res = 0;
for (int i = 0; i <len && a[i] != '\0'; ++i)
{
if (a[i] >= '0' && a[i] <= '9')
res = res*10 + a[i] - '0';
else if (a[i] >= 'a' && a[i] <= 'z')
res = res*16 + a[i] - 'a' + 10;
else if (a[i] >= 'A' && a[i] <= 'Z')
res = res*16 + a[i] - 'A' + 10;
}
return res;
}
void A::_10To16(int n, char* b)
{
int k = 0;
for(; n != 0; k++)
{
int t = n % 16;
if(t >= 0 && t < 10)
{
b[k] = t + '0';
}
else if(t >= 10 && t < 16)
{
b[k] = 'A' + t - 10;
}
n = n / 16;
}
b[k] = '\0';
}
int main()
{
char a[10];
int n=0;
int t;
cin>>a;
cout<<"a number="<<a<<endl;
cout<<"n=" << (n = A::_16To10(a, 10)) <<endl;
char b[50];
A::_10To16(n, b);
cout << b << endl;
return 0;
}