你要自己手动转换的函数的话,这个就是你i要的进制转换函数,vc6通过运行调试了
#include
#include
void main()
{
int change(char num[50],int length);
char num[50]="";
int number;
printf("input a number:0x");
gets(num);
number=change(num,strlen(num));
printf("result is:%d",number);
}
int change(char num[50],int length)
{
int j;
int number=0;
for(j=0;j
if((*(num+j)>='0')&&(*(num+j)<='9'))
number=number*16+*(num+j)-'0';
if((*(num+j)>='A')&&(*(num+j)<='F'))
number=number*16+*(num+j)-'A'+10;
}
return number;
}
#include "iostream.h"
#include
#define TRUE 1
long int power(int n) //十六的n次方
{
long int z=1;
for(int i=0;i
return z;
}
int main()
{
cout<<"请输入一个十六位进制的数字(1~9,a~e):"<
cin>>ch; //输入字符串
int i=0;
bool flag=TRUE; //判断标志
long int sum=0;
int heap,length;
length=strlen(ch); //求取字符长度
while (i
switch (ch[i])
{
case'A':
case'a':heap=10;break;
case'B':
case'b':heap=11;break;
case'C':
case'c':heap=12;break;
case'D':
case'd':heap=13;break;
case'E':
case'e':heap=14;break;
case'F':
case'f':heap=15;break;
case'1':heap=1;break;
case'2':heap=2;break;
case'3':heap=3;break;
case'4':heap=4;break;
case'5':heap=5;break;
case'6':heap=6;break;
case'7':heap=7;break;
case'8':heap=8;break;
case'9':heap=9;break; //每一个符合情况的字符的对应值
default:cout<<"你输入有误!"<
}
sum+=heap*power(length-1); //累加
i++;
length--;
}
if(flag==TRUE)
{
cout<<"该字符长度是:"<
return 0;
}
我的答案算法比较白痴的,但是可以看得懂
#include
#include
int main()
{
char buf[100];
char* p;
int n;
scanf("%s", buf);
n = strtol(buf,&p,16);
printf("n=%d\n", n);
return 0;
}