我有一个字节数组,其中一个值存储为16位无符号整数。它分布在我的字节数组DataArray[11]
和DataArray[12]
中的两个位置。我对包含字节数组的数据包的文档告诉我,我需要提取的值首先包含最低有效位。我无法绕过位掩码和位移,我实际上不清楚我是否需要使用其中一个,或两者兼而有之。
这是我到目前为止所做的,但结果似乎不对:
int result = (DataArray[11] << 8 | DataArray[12]) & 0xFF;
答案 0 :(得分:5)
你正试图获得一个16位整数,对吧?但是你使用& 0xff
掩盖它 - 它将你限制在8位。我建议你屏蔽每个字节而不是结果:
int result = (DataArray[11] & 0xff) |
((DataArray[12] & 0xff) << 8);
我在这里添加的括号多于可能需要的括号,只是为了理智而不需要担心优先级。
我还交换了排序,以便您转移DataArray[12]
而不是DataArray[11]
,因为它意味着首先是至少 - 显着的字节。