gpt4 book ai didi

java - 将原始字节值转换为 Java 类型

转载 作者:行者123 更新时间:2023-11-30 06:36:33 24 4
gpt4 key购买 nike

我在将原始字节值转换为 Java 类型时遇到问题。我通过数据报套接字接收字节作为字节数组。我确切地知道哪些字节意味着什么,但我不知道如何适本地转换它们(我的意思是我知道偏移量,但不知道我认为我收到的内容是否正确;))。

比如我想把16位unsigned short转成java int类型。我在网上找到了一些例子,一个是:

public int getUShort(byte[] bytes, int offset) {
int b0 = bytes[offset] & oxFF;
int b1 = bytes[offset + 1] & oxFF;

return (b1 << 8) + (b0 << 0);

另一个是一样的,但最后一行是:

return (b0 << 8)  + b1;

当然会给出不同的结果。哪一个是正确的?您能否也给我一个有效的示例,说明如何对无符号长整型执行相同的操作?

提前致谢!

最佳答案

前阵子我不得不做一些类似的工作,我发现做这类工作的最好方法是使用 ByteBuffer 及其到 DoubleBuffer 的转换>、LongBuffer 等。您可以通过调用将字节数组转换为 ByteBuffer

ByteBuffer myBuffer = ByteBuffer.wrap(myRawArray);

从那里,您可以通过调用

int 列表的形式查看字节
IntBuffer myIntBuffer = myBuffer.asIntBuffer();

然后您可以通过调用转换字节

int nextInt = myIntBuffer.get();

这些类还对批量获取操作提供大量支持,因此如果您知道您正在通过网络接收一大堆相同类型的数据,则可以非常快速地进行转换。

如果可能的话,另一种方法是使用某种基于 Java 的序列化通过网络发送数据。这使您可以使用流编写器类更轻松地进行转换。当然,这可能不可用,尤其是当您与非 Java 服务器通信时,但它可能值得探索。

关于java - 将原始字节值转换为 Java 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708141/

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