本帖最后由 bj2008wyou 于 2014-4-8 15:33 编辑
应该这样写吧
低8位: data2 = (uint8_t)(data1 & 0xFFu);
次低8位:data2 = (uint8_t)((data1 >> 8u) & 0xFFu);
在你原来基础上是加个显示转换应该也是可以的吧data2 = (uint8_t)data1;
data2 = (uint8_t)(data1 >> 8u);
总之,一般是不应该隐式转换的,而应该是显式转换。然后建议你去验证下你原来的做法,看是不是被截取了高8位的缘故?真这样的话有可能是依赖于编译器的大小端模式。
本帖最后由 bj2008wyou 于 2014-4-8 15:33 编辑
应该这样写吧
低8位: data2 = (uint8_t)(data1 & 0xFFu);
次低8位:data2 = (uint8_t)((data1 >> 8u) & 0xFFu);
在你原来基础上是加个显示转换应该也是可以的吧data2 = (uint8_t)data1;
data2 = (uint8_t)(data1 >> 8u);
总之,一般是不应该隐式转换的,而应该是显式转换。然后建议你去验证下你原来的做法,看是不是被截取了高8位的缘故?真这样的话有可能是依赖于编译器的大小端模式。
举报