|
|
1
4
使用位0和31来确定字节数,并在中间包3个10位值。测试匹配端点的一个简单方法是将位0设置为0,将位31设置为1。在接收端,如果位0是1,则断言位31是0,并交换endianness。否则,如果位0为0,则断言位31为1并提取3个值。 |
|
|
2
3
可以使用位字段,但未定义机器字内的顺序: 也就是说,它看起来像:
编辑:更正,感谢乔纳森。 |
|
|
3
0
最简单的一件事就是选择一个来传输。要在传输流中压缩位,请使用累加器(在您的情况下至少为17位),在该累加器中,您一次移位10位,并跟踪其中有多少位。传输字节时,从累加器中取出一个字节,从计数中减去8,然后将累加器移位8。我在这里使用“传输”的方式很松散,你可能会存储到一个缓冲区中,以便以后传输。 例如,如果传输是小尾数,则在accumator的顶部(ms位)移动10位,然后从底部提取字节。例如:对于两个值a和b:
接收是类似的拆包操作。 |