【发布时间】:2016-05-06 09:42:49
【问题描述】:
我熟悉将两个连续字节转换为 int 1:
我想要的格式是Little Endian
int number= ((int)BYTE2<<8) | ((int)BYTE1);
现在我设置相机以 12packed 格式向我发送数据。这意味着要获得一个字节,我需要完整的第一个字节,而第二个字节只需要 4 位。
因此每 3 个字节我可以有两个 12 位 int 数字:
我需要获取第一个字节的整体,前 4 位形成第二个字节,并将这 12 位组合成一个小端格式的 int。
然后我需要从第二个字节和整个第三个字节中取出最后 4 位,并以小端顺序组合它们以获得第二个 int。见附图。
如何使用位移操作来实现这一点?
对不起,我不熟悉位移操作
我怀疑这是正确的方法,但这至少是正确的方法吗?
int FirstInt= ((int)(BYTE2 & 0xF0)<<8) | ((int)BYTE1);
int SecondInt= ((int)BYTE3<<8) | ((int)(BYTE2 & 0x0F));
【问题讨论】:
-
是的,如果 byte2 的底部是第二个 int 的最低有效位,那么在我看来是正确的 - 除非你想将 byte3 左移 4 而不是 8。
-
感谢您的分析员 Uwe Keim。所以你认为我应该这样: int SecondInt= ((int)BYTE3
标签: c# bit-shift endianness