对于MODBUS来说
高位在前 低位在后
这样大家就清楚高高低低原则了 (低位用D表示,高位用G表示)
D G G D
如果把内存地址的数据 01 02 03 04 放到寄存器就是 04 03 02 01
G D D G
如果把寄存器的数据 04 03 02 01 放到内存地址为 01 02 03 04
0x0001 0x0002 0x0004 0x0008 0x0010 0x0020 0x0040 0x0080
0 1 2 3 4 5 6 7
0x0100 0x0200 0x0400 0x0800 0x1000 0x2000 0x4000 0x8000
8 9 10 11 12 13 14 15
//取数
buf[0] & 0x01) > 0 ? 1 : 0
//拼接
temp |= (buf[0] & 0x01) > 0 ? 1 : 0;
temp |= ((buf[1] & 0x02) > 0 ? 1 : 0) << 1;