C语言中,怎么把十进制转换成十六进制数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,怎么把十进制转换成十六进制数相关的知识,希望对你有一定的参考价值。

可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型转换为其他进制的字符串
举个例子
#include<stdio.h>
#include<stdlib.h> //包含_itoa的头文件

void main()

int a=110;
char p[20];
_itoa(110,p,16); //16表示16进制,还可以用2、8、10
printf("%s",p);
参考技术A #include<stdio.h>
#include<stdlib.h>
//顺序栈定义
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef int SElemType;
typedef struct
SElemType *base;
SElemType *top;
int stacksize;
SqStack;

//算法3.1 顺序栈的初始化
Status InitStack(SqStack &S) // 构造一个空栈 S
S.base = new SElemType[MAXSIZE]; //为顺序栈分配最大容量为MAXSIZE的数组空间
if (!S.base)
exit(OVERFLOW); //存储分配失败
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;

//算法3.2 顺序栈的入栈
Status StackEmpty(SqStack &S)
return OK;

Status Push(SqStack &S, SElemType &e) // 插入元素e为新的栈顶元素
if(S.top -S.base >=S.stacksize)
S.base =(SElemType*)realloc(S.base ,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base )exit(OVERFLOW);
S.top =S.base +S.stacksize ;
S.stacksize +=STACKINCREMENT;

*S.top++=e;
return OK;

//算法3.3 顺序栈的出栈
Status Pop(SqStack &S, SElemType &e)
// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
e=*--S.top;
return OK;

//算法3.4 取顺序栈的栈顶元素
Status GetTop(SqStack S, SElemType &e)
// 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
if (S.top == S.base)
return ERROR;
e = *(S.top - 1); //栈顶指针减1,将栈顶元素赋给e
return OK;


int main()
SqStack s;
SElemType e;
SElemType n;
SElemType a;
printf( "需要转换的数是:");
InitStack(s);
scanf("%d",&n);
while(n!=0)
a=(SElemType)n%16;
Push(s,a);
n=n/16;

while(GetTop(s,e)==OK)
printf("%d ",e);
Pop(s,e);


return 0;

怎么把float型转换成int

参考技术A   1、规格化值。当指数域的8个二进制数字既非全零又非全1时,float数值就是这种情况。设指数域的八位二进制所表示的十进制数为e,
则公式1中的E就是
E
=
e
-
(2^7
-
1)
  而且此时,将小数域所表示的二进制假设为(f22)(f21)...(f1)(f0)
(注2)
,则该小数域所表示的值即为f
=
0.(f22)(f21)...(f1)(f0).于是M
=
1
+
f
  2.
非规格化值。当指数域的8个二进制数字为全0时,float数值就为这种情况。
  这时指数域所表示的十进制数为0,规定指数值为
E
=
1
-
(2^7
-
1),也就是E为定值-126;此时小数域的值仍表示f
=
0.(f22)(f21)...(f1)(f0),但是M的值却变成M
=
f。
  3.
特殊值。当指数域的8个二进制数字为全1时即为这种情况。
  当小数域为全零时,该float值根据符号位的不同表示正无穷或者负无穷;
  当小数域为非全零时,该float值为NaN(Not
a
Number)。
参考技术B   1、规格化值。当指数域的8个二进制数字既非全零又非全1时,float数值就是这种情况。设指数域的八位二进制所表示的十进制数为e, 则公式1中的E就是 E = e - (2^7 - 1)
  而且此时,将小数域所表示的二进制假设为(f22)(f21)...(f1)(f0) (注2) ,则该小数域所表示的值即为f = 0.(f22)(f21)...(f1)(f0).于是M = 1 + f
  2. 非规格化值。当指数域的8个二进制数字为全0时,float数值就为这种情况。
  这时指数域所表示的十进制数为0,规定指数值为 E = 1 - (2^7 - 1),也就是E为定值-126;此时小数域的值仍表示f = 0.(f22)(f21)...(f1)(f0),但是M的值却变成M = f。
  3. 特殊值。当指数域的8个二进制数字为全1时即为这种情况。
  当小数域为全零时,该float值根据符号位的不同表示正无穷或者负无穷;
  当小数域为非全零时,该float值为NaN(Not a Number)。

以上是关于C语言中,怎么把十进制转换成十六进制数的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程:怎么把一个十进制数转换成为一个十六进制数?

C语言编程:怎么把一个十进制数转换成为一个十六进制数?

C语言怎么将超大的16进制数转换成10进制,这个16进制数是个大数,比如0x123456789ABCDEF12345这种

任意十进制数转换成ASCII码C语言程序

c语言编程 把十进制转换为十六进制

用C语言如何把十进制转换为十六进制,要求程序中运用函数