java—将字节值转换为int

ssm49v7z  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(413)

我试图将一个单字节值存储到int中的一个位置,但是,我很难弄清楚这是如何做到的。我已经将要存储在int中的字节移到了正确的值,但是我不知道如何将它与值结合起来。

public static int ibyteToInt(int b, int pos, int val)
    {
        return ((b & 0xff) << (8 * pos)) ??;
    }

最简单的解决方案是将int中的另外3个字节解包,然后将4个字节重新组合成int,但这当然不是很有效。

public static int bytesToInt(byte a, byte b, byte c, byte d)
    {
        return ((a & 0xff) << 0) | ((b & 0xff) << 8) | ((c & 0xff) << 16) | ((d & 0xff) << 24);
    }
ylamdve6

ylamdve61#

另一个简单的解决方案是清除目标字节,然后输入新值:

int replaceByte(int value, byte b, int pos)
{
    return (value & ~(0xFF << (pos * 8))) | ((b & 0xFF) << (pos * 8));
}

这与如何在c#中执行相同的操作非常相似,但java需要 & 0xFF 防止标志延伸 byte . 如果“byte”是介于0和255之间的值,并作为 int ,则不需要该步骤。

相关问题