gpt4 book ai didi

java - 如何在Java中保持接收到的小端数据?

转载 作者:行者123 更新时间:2023-12-02 03:01:12 25 4
gpt4 key购买 nike

我的 Java 应用程序将通过套接字通信接收小端短[]数据。 Java 默认情况下是大端。但我想保留这些短裤小端

如果我定义一个short[]来接收数据,Java会自动转换它们从小端到大端什么时候将数据放入short[]?

我需要做些什么来保留接收到的数据为little-endian格式吗?

最佳答案

摘要

Java 不会自动将字节转换为短整型,尽管您可以显式告诉 Java 进行转换。您不能强制 Java 将其自己的 Shorts 解释为小端数字。但是,您可以将 Java Shorts 编写为 Little-Endian Shorts。

详情

当您说您正在接收一系列小端字节序时,我假设您的意思是您正在接收一系列字节,并将该系列分成对,并且第一个字节pair是short的最低有效字节,第二个是最高有效字节。

我不相信 Java 会知道如何解释这些字节,除非你明确告诉它。

例如,如果您使用 java.io.DataInputStream.readShort它将读取“此输入流的接下来的两个字节,解释为带符号的 16 位数字” - 并且,虽然本文档没有说明,但它将以 Java 方式解释短字节,即大端字节序。

正如评论中所述,如果您希望将小端短字节读入 Java 短字节,您可以使用 java.nio.ByteBuffer : wrap字节数组,设置orderLITTLE_ENDIAN ,并调用getShort 。但是,这会将数据存储为 Java Short,即大端字节序。您无法更改该存储格式。

但是,您可以使用相同的 java.nio.ByteBuffer 将 Java 短格式编写为小端短格式。 : wrap字节数组,设置orderLITTLE_ENDIAN ,并调用putShort .

关于java - 如何在Java中保持接收到的小端数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849674/

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