输入一个数据获取高八位和低八位
h := Tc2_System.SHR32(Value,8);
l := Value AND 16#00FF;
将高八位、低八位合并成一个16进制数
dwValue := UDINT_TO_UINT( Tc2_System.SHL32(h,8) + l);
// 输入一个数据获取高八位和低八位
// 将16进制数据转换成高低八位分别填充至发送数据进行发送
FOR i := 0 TO 19 DO
abyTestData[2*i] := DWORD_TO_BYTE( Tc2_System.SHR32(auiToData[i],8));
abyTestData[2*i+1] := DWORD_TO_BYTE( auiToData[i] AND 16#00FF);
END_FOR
// 将高八位、低八位合并成一个16进制数
// 接收到数据后,再依次将数据合并成16位数据
FOR i := 0 TO 39 BY 2 DO
auiTestData[i/2] := UDINT_TO_UINT( Tc2_System.SHL32(abyTestData[i],8) + abyTestData[i+1]);
END_FOR
左移右移数据
左移一位代表乘以2,右移一位代表除以2。所以,对于a乘以x而言,只是将a左移x为1的位并累加即可。
例如:将a右移8位,就是a/256(2^8);将a左移8位,就是a*256(2^8)。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
我的知识库
本文地址: ST编程技巧之16位数据的分解与合并
本文地址: ST编程技巧之16位数据的分解与合并