十六进制转二进制

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#define M 400
void fun10_2(long Sum)//十进制转二进制
{
int i=0,arr[M];
while(Sum)
{
arr[i++]=Sum%2;
Sum=Sum/2;
}
for( ;i>0;i--)
printf("%d",arr[i-1]);
}
void fun16_10(char str[])//十六进制转十进制
{
long Sum=0,cet=0;
int len=strlen(str);
for( ;len>0;len--)
{
if(isdigit(str[len-1])){
Sum+=(str[len-1]-'0')*pow(16,cet);
}else{
Sum+=(str[len-1]-'A'+10)*pow(16,cet);
}
cet++;
}
fun10_2(Sum);//函数嵌套调用
}
int main()
{
char str[100];
gets(str);
fun16_10(str);
return 0;
}
二进制转十六进制

#include<stdio.h>
#include<string.h>
int main(){
int N,n,k,t,i,j,m,x;
char a[10005];
x=0;
int b[10005]={0};
N=1;
while(N--){
scanf("%s",&a);
n=strlen(a);
for(i=0;i<n;i++)
b[i]=0;
k=0;
t=1;
m=0;
for(i=n-1;i>=0;i--){
b[k]+=(a[i]-'0')*t;
t*=2;
m++;
if(m%4==0){
k++;
t=1;
}
}
for(i=0;i<n;i++){
if(b[i]>=10){
switch(b[i]){
case 10 : b[i]='A'; break;
case 11 : b[i]='B'; break;
case 12 : b[i]='C'; break;
case 13 : b[i]='D'; break;
case 14 : b[i]='E'; break;
case 15 : b[i]='F'; break;
}
}
}
for(i=k;i>=0;i--){
if(b[i]!=0){
for(j=i;j>=0;j--){
x++;
if(b[j]>=65 && b[j]<=70 )
printf("%c",b[j]);
else printf("%d",b[j]);
}
break;
}
}
if(i==-1) printf("0");
printf("\n");
if(int y=x%2==1)
{
x=x/2+1;
}
else
x=x/2;
printf("len=%d",x);
}
}
浙公网安备 33010602011771号