gpt4 book ai didi

Java bytebuffer 将三个字节转换为int

转载 作者:搜寻专家 更新时间:2023-11-01 01:35:49 25 4
gpt4 key购买 nike

我目前正在处理一些 little-endian 二进制数据,我遇到了一个棘手的问题,我需要将奇数字节转换为整数值。

现在使用 ByteBuffer 类,我可以使用 getInt() getLong() 函数完美地读取整数和长整数,分别读取 4 字节和 8 字节。

但是,在这个例子中,我需要读取三个字节并从中生成一个 int。我尝试过 getShort + get()(2 字节 + 1 字节),但我认为这不是正确的做法。

我猜我需要将字节一起进行位移以获得正确的 int 值,但我总是对位移感到有点困惑。

我还以为 bytebuffer 类会提供读取奇数字节的函数,但似乎没有。

一种方法是创建一个长度为三个字节的 byte[],将这三个字节放入其中,然后在其周围包裹一个字节缓冲区,并从中读取一个 int。但这似乎有很多额外的代码。

如有任何建议或建议,我们将不胜感激。

谢谢

最佳答案

获取三个字节通过

byte[] tmp = new byte[3];
byteBuffer.get(tmp);

然后通过

转换为 int
int i = tmp[0] << 16 | tmp[1] << 8 | tmp[2];

int i = tmp[2] << 16 | tmp[1] << 8 | tmp[0];

取决于您的字节顺序。

关于Java bytebuffer 将三个字节转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583442/

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