怎样将“十进制形式”转换成对应的“十六进制形式”
例如: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");
}