大家好,我遇到了一个从没有想到的问题:
union { ulong N; uchar B[4]; } K;
。。。。
K.N=37534852 //=0x02 3c bc 84
for (i=0;i<4;i++)
{//sbuf[i+4]=K.B;
sbuf[i+4]=K.B[3-i];//多字节数据按照 高位到低位发送,
}
在VC中试验:K.B[0]=0x84; K.B[1]= 0x bc;K.B[2]= 0x 3c;K.B[3]= 0x02;
那么sbuf[4]= K.B[3]= 0x02;以此类推。。
可是 pc机接收的单片机数据,sbuf[4]= 0x84= K.B[0],
这是否说明 单片机中的union 结构与别的系统中不同。
谢谢大家,
每什么!int 、long int 的高低在PC和51中是刚好相反。
每什么!int 、long int 的高低字节在PC和51中是刚好相反。
pc的从低地址到高地址,51的刚好相反,
单片机也是可以选择大小端格式的吧,litter endian和big endian就刚好反了。
不同CPU的litter endian/big endian模式是不同的。