c,字符数组转16进制数

c,字符数组转16进制数
char a[]={'0','0','a','2','3','2','8','e'};
uint16 b;

怎么把它转成
b 等于 0x00a2328e 即 b=0xa2328e
我不是要显示出来,我是要把这个16进制的数值付给b,我要来用的,不是来显示的
我下面程序的n就是转出来的值,你可以截取其中转换部分的代码

#include

main()
{
char a[]={'0','0','肆历a','2','3'裂巧搜,'2','8','e'};
int n=0,i;

for(i=0;i{
if(a[i]>='0'&&a[i]<='9')
{
n=n*16+a[i]-'0';
}
else if(a[i]>='A'宽模&&a[i]<='F')
{
n=n*16+a[i]-'A'+10;
}
else if(a[i]>='a'&&a[i]<='f')
{
n=n*16+a[i]-'a'+10;
}
}
printf("0x%x",n);
}
//终于写出来了。vc++6.0编译通过。喊弊
//看看是不是你要的效果~

#include
#include
main()
{
char a[]={'0','0'宏陵,'a','2','3','2','8','e'};
long b;
int i,temp;

b=0;
for(i=0;i<8;i++){
if((temp=a[i]-'0')>9)
if((temp-='A'-'0'蔽渗戚-10)>15)
temp-='a'-'A';
printf("%d",temp);
b+=(long)temp*pow(16,(double)(7-i));
}
printf("%ld",b);

}
#include
main()
{
char a[]={'0','0','a','2','前稿3','慧搭孝2'枝橘,'8','e'};
printf("%0x\n",strtol(a,NULL,16));
}
用位操作
← 上一篇: 下一篇: →