0

我有一个基于套接字的服务器-客户端通信通道。我将 3 个整数值打包到 byte[] 并将其写入套接字 OutputStream,但我如何将其转换回来?

代码简单:

    ByteBuffer b = ByteBuffer.allocate(12);
    b.putInt(BTActions.READY_FOR_GAME);
    b.putInt(i);
    b.putInt(l);

    try
    {
        mAcceptThread.getWriteSocket().write(b.array());
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
4

1 回答 1

0

如果使用 a ByteBuffer,则此缓冲区具有字节顺序;这个顺序默认是大端的。

您分配一个 12 字节的缓冲区并向其中写入 3 个整数;那是12个字节,到目前为止一切都很好。

鉴于您没有为 ByteBuffer 定义顺序,默认为大端。大端是 JVM 默认用于所有原始类型的。

因此,在将 3 个整数写入缓冲区后,您可以将它们读回:

final int i1, i2, i3;
buffer.rewind();
i1 = buffer.getInt();
i2 = buffer.getInt();
i3 = buffer.getInt();
于 2013-07-05T22:15:33.110 回答