Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个字节数组,其中一个值存储为 16 位无符号整数。这分布在我的字节数组中的两个位置,DataArray[11]并且DataArray[12]. 我为包含字节数组的数据包提供的文档告诉我,我需要提取的值首先打包最低有效位。我在使用位掩码和位移时遇到了麻烦,实际上我不清楚我是否需要使用其中一个,或者两者都使用。
DataArray[11]
DataArray[12]
这是我到目前为止所拥有的,但结果似乎不正确:
int result = (DataArray[11] << 8 | DataArray[12]) & 0xFF;
您正在尝试获得一个 16 位整数,对吗?但是您正在使用它来掩盖它& 0xff- 这将您限制为 8 位。我建议你屏蔽每个字节而不是结果:
& 0xff
int result = (DataArray[11] & 0xff) | ((DataArray[12] & 0xff) << 8);
我在这里包含了比可能需要的更多的括号,只是为了保持理智而不需要担心优先级。
我还交换了顺序,以便您移动DataArray[12]而不是DataArray[11],因为它意味着首先是最不重要的字节。