long型变量清0后,赋予前24位值,随后将其赋予三个char变量,每个char存8位,结果不相等

long型变量赋予前24位数据,随后将其拆分,分别赋予三个char变量,每个char存8位数据。再将三个char赋值给一个long,结果前后两个long不相等不相等

问题代码

各变量定义如下:
xdata uchar Date_Floor_Storage[256] at 0x0000;
uint32_t DateReceived;
uint32_t Test_PreDate;//ceshi
uint32_t Test_NextDate;//ceshi
uint32_t Date_Learned;//ceshi
给long32位变量拆分成三个char8位变量代码如下:
// Date_Learned的前24位已经赋值
Date_Floor_Storage[0]=Date_Learned>>16 & 0xff;
Date_Floor_Storage[1]=Date_Learned>>8 & 0xff;
Date_Floor_Storage[2]=Date_Learned & 0xff;
三个char合成一个long如下:
Date_Compared = (unsigned long)Date_Floor_Storage[0]<<16 | Date_Floor_Storage[1]<<8 | Date_Floor_Storage[2];

合成后的long型与拆分的long型判断结果不等
if(Test_PreDate == Date_Compared)结果为否

已解决,是最开始给Date_Learned赋值时多赋了一位