关于c51数据转换的问题,怎么才能将4个8位数组的值传给一个32位的变量??

2024-11-06 08:12:24
推荐回答(3个)
回答1:

容易理解的办法:
start=fat_Data[0]*0x1000000+fat_Data[1]*0x10000+fat_Data[2]*0x100+fat_Data[3]
好比1、2、3如何变成123
1*100+2*10+3=123

乘法和左移是一样的,*2其实就是<<1。但单片机对<<1这样的操作效果要高,所以你理解了以后用楼上的等式就可以了

回答2:

start=(fat_Data[0]<<24)+(fat_Data[1]<<16)+(fat_Data[2]<<8)+fat_Data[3];

回答3:

long 就是32位的.. long start ; start=0;start=(start|fat_Data[0])<<24|(start|fat_Data[1]<<16)|(start|fat_Data[2]<<8)|(start|fat_Data[3]);//'|'是按位或