gpt4 book ai didi

java - 将 2 个 8 位字节数组位置合并为一个 16 位整数

转载 作者:太空狗 更新时间:2023-10-29 16:41:14 26 4
gpt4 key购买 nike

我有一个字节数组,其中一个值存储为 16 位无符号整数。这分布在我的字节数组中的两个位置,DataArray[11]DataArray[12]。我拥有的包含字节数组的数据包的文档告诉我,我需要提取的值首先打包最低有效位。我在思考位掩码和位移位时遇到了麻烦,实际上我不清楚是否需要使用一个或另一个,或两者兼而有之。

这是我到目前为止的结果,但结果似乎不正确:

int result =  (DataArray[11] << 8 | DataArray[12]) & 0xFF;

最佳答案

您正在尝试获取一个 16 位整数,对吗?但是您使用 & 0xff 来屏蔽它 - 这将您限制为 8 位。我建议你屏蔽每个字节而不是结果:

int result = (DataArray[11] & 0xff) |
((DataArray[12] & 0xff) << 8);

我在这里包含了比可能需要的更多的括号,只是为了理智而不需要担心优先级。

我还调换了顺序,这样您就可以移动 DataArray[12] 而不是 DataArray[11],因为它是最少的-重要字节在前。

关于java - 将 2 个 8 位字节数组位置合并为一个 16 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com