Microchip
直播中

吴立节

7年用户 200经验值
私信 关注
[问答]

怎么将一个单词分成两个字节?

大家好,从一个新来的人到C(XC16)的问题,我需要把一个16位宽的字分成两个8位的字节。我找不到一个简单而优雅的方法来做这件事。我在我的Microchip课程中找到了一些东西:使用一个结构中的一个结构:联合{UtiN Word;Stutt{Unt8ByTe0:0:Unt8ByTE1;8;};} w;但是我不能想象在C中没有其他预定义的方法来做同样的事情!谢谢你的帮助。

回帖(19)

王璨

2020-4-20 07:48:39
还有其他方法(比如掩饰和移动),但是联盟“技巧”是最优雅和高效的。
举报

王淑英

2020-4-20 07:55:47
联合方法的唯一问题是它假定字节顺序。如果字节存储的字节数很少。(即LS字节跟随MS字节),然后在联合字节中是LS字节,字节1是MS字节。如果CPU使用大endian,那么它就不能工作。做这件事的通用方法是:你可以通过声明宏来使它变得漂亮。这是我的建议。它总是比W.BYTE0更有效,更具解释力。
举报

李兆峰

2020-4-20 08:14:47
是的,就像这里的HTTP//www. McCHIP.COM/FUMMS/M/TM.ASPX?M=531031
举报

李天竹

2020-4-20 08:32:03
最好的办法是定义宏,比如注意x周围的括号。这样可以确保LOBYTE(a^b)之类的东西正常工作。另外,注意在HIBYTE(x)中应用的类型转换——一些C编译器可以以不同的方式右移带符号的数字。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分