关于keil的一些基础知识(持续更新)

#关于keil的一些基础知识(持续更新)

1.数据类型转换
(1)写程序的时候需要将一个32位16进制数值转换到10进制显示在TF屏上,由于基础比较烂,一直没有想明白,写了各种复杂的类型转换。。
代码如下:
把u32 Id0的值转化成long 类型给card_id

		Id0=((rBuf1[1]&0xff000000)>>6*4)|((rBuf1[1]&0x00ff0000)>>2*4)|((rBuf1[1]&0x0000ff00)<<2*4)|((rBuf1[1]&0x000000ff)<<6*4);
//		Id[7]=(Id0&0xf0000000)>>7*4;
//		Id[6]=(Id0&0x0f000000)>>6*4;
//		Id[5]=(Id0&0x00f00000)>>5*4;
//		Id[4]=(Id0&0x000f0000)>>4*4;
//		Id[3]=(Id0&0x0000f000)>>3*4;
//		Id[2]=(Id0&0x00000f00)>>2*4;
//		Id[1]=(Id0&0x000000f0)>>1*4;
//		Id[0]= Id0&0x0000000f;			
//			for(c=0;c<8;c++)
//			{
//				switch(Id[c])
//				{
//					case 0x00000000 : l1=0;break;
//					case 0x00000001 : l1=1;break;
//					case 0x00000002 : l1=2;break;
//					case 0x00000003 : l1=3;break;
//					case 0x00000004 : l1=4;break;
//					case 0x00000005 : l1=5;break;
//					case 0x00000006 : l1=6;break;
//					case 0x00000007 : l1=7;break;
//					case 0x00000008 : l1=8;break;
//					case 0x00000009 : l1=9;break;
//					case 0x0000000A : l1=10;break;
//					case 0x0000000B : l1=11;break;
//					case 0x0000000C : l1=12;break;
//					case 0x0000000D : l1=13;break;
//					case 0x0000000E : l1=14;break;
//					case 0x0000000F : l1=15;break;
//					default : break;
//				}
//				switch(c)
//				{
//					case 0 : card_id1=l1*1;break;
//					case 1 : card_id2=l1*16;break;
//					case 2 : card_id3=l1*256;break;
//					case 3 : card_id4=l1*4096;break;
//					case 4 : card_id5=l1*65536;break;
//					case 5 : card_id6=l1*1048576;break;
//					case 6 : card_id7=l1*16777216;break;
//					case 7 : card_id8=l1*268435456;break;

//					default : break;
//				}
//				card_id=card_id1+card_id2+card_id3+card_id4+card_id5+card_id6+card_id7+card_id8;
//			}
				g_lCard_id=card_id;
//				card_id=0;
//	

但是当我使用debug调试时,观测变量的值,发现显示转换后的值仍然是16进制显示,而我在显示屏观测看到的是一个十进制整数,才发现我被自己差劲的基础坑了。
我可以直接将u32 Id0的值赋给long类型的g_lCard_id
如下:

		Id0=((rBuf1[1]&0xff000000)>>6*4)|((rBuf1[1]&0x00ff0000)>>2*4)|((rBuf1[1]&0x0000ff00)<<2*4)|((rBuf1[1]&0x000000ff)<<6*4);
		g_lCard_id=Id0;

两种方式在显示屏上显示的效果是一样的。。。

PS:萌新一个,如有错误,还请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值