首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎的将“十进制形式”转换成对应的“十六进制形式”

2013-01-01 
怎样将“十进制形式”转换成对应的“十六进制形式”例如:int num 2;转后后的结果num 0x2;int num 20;转

怎样将“十进制形式”转换成对应的“十六进制形式”
例如:int num = 2;转后后的结果num = 0x2;int num = 20;转后的结果:int num = 0x20;函数原型为 void fun(int* p);调用方式fun(&num);
[解决办法]

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
unsigned int iv,i;
unsigned char BCD[5];//定长10位BCD码
unsigned char sv[11];
void main() {
    iv=123456789;//最大10位无符号正整数
    //INT2BCD
    sprintf(sv,"%010u",iv);
    for (i=0;i<10;i+=2) {
        BCD[i/2]=(sv[i]<<4)
[解决办法]
(sv[i+1]&0x0F);
    }
    printf("BCD=%02x%02x%02x%02x%02x\n",BCD[0],BCD[1],BCD[2],BCD[3],BCD[4]);
    //BCD2INT
    for (i=0;i<10;i+=2) {
        sv[i]='0'
[解决办法]
(BCD[i/2]>>4);
        sv[i+1]='0'
[解决办法]
(BCD[i/2]&0x0F);
    }
    sscanf(sv,"%010u",&iv);
    printf("iv=%010u\n",iv);
    getch();
}

[解决办法]
#include <stdio.h>
#include<stdlib.h>
#define MAXSIZE  20
typedef int ElemType;
typedef struct {
   ElemType  elem[MAXSIZE];
   int  top;
 }SqStack;
void InitStack( SqStack *S);
int  Empty( SqStack *S);
int  Push(SqStack *S, ElemType x);
int  Pop(SqStack *S );
 void fun(int n,int R);
void main()
{
  int n;
  char i;
  while(1)
  { printf("10进制转换为R(大小写都可以)进制\n"); 
    printf("b-------2\n");
    printf("o-------8\n");
    printf("x-------16\n");
    printf("e-------退出\n");
    printf("请输入10进制数n和转换的i进制:\n");
    scanf("%d,%c",&n,&i);
    switch(i)
    {  case'B':
       case'b': printf("转换为2进制后为:\n");
            fun(n,2);
            break;
       case'O':
       case'o': printf("转换为8进制后为:\n");
           fun(n,8);
               break;
       case'X':
       case'x': printf("转换为16进制后为:\n");
        printf("0x");
            fun(n,16);
            break; 
       case'E':


       case'e': printf("退出系统\n");
    exit(0);
       default: printf("input error,input again");
     }
  }
}
void InitStack( SqStack *S)
{  S->top=0;
}
int  Empty( SqStack *S)
{return ( S->top==0);
}
int  Push(SqStack *S, ElemType x)
{  if( S->top==MAXSIZE )  return 0;
         S->elem[S->top]=x; S->top++;
         return 1;
}
int  Pop(SqStack *S )
{ --S->top;
  return (S->elem[S->top]);
}
void fun(int n,int R)
{  SqStack S;
   InitStack(&S);
   char m;
   int p;
   while(n!=0)
   { 
     Push(&S,n%R);
     n=n/R;
   }
   while(!Empty(&S))
   { p=Pop(&S);
  if(p>=10)
  { m=p%10+'A';
    printf("%c",m);
  }
      else    
    printf("%d",p);
    }
  printf("\n");
}

热点排行