C++ 任意数据类型转为16进制输出

float和int没办法分开,还是得区分对待
Ubuntu下测试的,windows下没试过,大家试了告诉我啊。

#include <stdio.h>

union FLOATUN{
	unsigned int unui;
	float 		 unfl;
};
int main(){
	FLOATUN fun;
	FLOATUN *pfun;
	pfun = (FLOATUN *)&fun.unui;
	printf("usint addr:%p\n",pfun);
	pfun = (FLOATUN *)&fun.unfl;
	printf("float addr:%p\n",pfun);

	bool			aa;
	bool		   *a = &aa; 		*a= 1;
	char            bb;
	char 		   *b = &bb; 		*b= 0x12;
	unsigned char   cc;
	unsigned char  *c = &cc; 		*c= 0x12;
	short			dd;
	short		   *d = &dd; 		*d= 0x123;
	unsigned short	ee;
	unsigned short *e = &ee; 		*e= 0x123;
	int				ff;
	int			   *f = &ff; 		*f= 0x123;
	unsigned int	gg;
	unsigned int   *g = &gg; 		*g= 0x123;
	float			hh;
	float		   *h = &hh; 		*h= 12.34;
	double			ii;
	double		   *i = &ii; 		*i= 12.34;

	unsigned int ui;
	float uf;

	// 用联合体获取12.34的32位值
	fun.unfl = 12.34;
	printf("float hex value:%x\n",fun.unui);

	ui = *a;
	pfun = (FLOATUN*) &ui;
	printf("a:%08x\n",*pfun);
	ui = *b;
	pfun = (FLOATUN*) &ui;
	printf("b:%08x\n",*pfun);
	ui = *c;
	pfun = (FLOATUN*) &ui;
	printf("c:%08x\n",*pfun);
	ui = *d;
	pfun = (FLOATUN*) &ui;
	printf("d:%08x\n",*pfun);
	ui = *e;
	pfun = (FLOATUN*) &ui;
	printf("e:%08x\n",*pfun);
	ui = *f;
	pfun = (FLOATUN*) &ui;
	printf("f:%08x\n",*pfun);
	ui = *g;
	pfun = (FLOATUN*) &ui;
	printf("g:%08x\n",*pfun);
	uf = *h;
	pfun = (FLOATUN*) &uf;
	printf("h:%08x\n",*pfun);
	uf = *i;
	pfun = (FLOATUN*) &uf;
	printf("i:%08x\n",*pfun);
}

输出

usint addr:0x7fff87c078e0
float addr:0x7fff87c078e0
float hex value:414570a4
a:00000001
b:00000012
c:00000012
d:00000123
e:00000123
f:00000123
g:00000123
h:414570a4
i:414570a4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值