有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓如何在Java中将byte[]转换为int

我有一个基于socket的服务器-客户端通信通道。我将3个整数值压缩到字节[],并将其写入socket 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();
    }

共 (1) 个答案

  1. # 1 楼答案

    如果使用ByteBuffer,则此缓冲区具有字节顺序;默认情况下,这个顺序是big-endian

    分配一个12字节的缓冲区,并向其写入3个整数;这是12个字节,到目前为止还不错

    假设您没有定义ByteBuffer的顺序,默认值是big-endian。默认情况下,JVM对所有基元类型都使用big-endian

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

    final int i1, i2, i3;
    buffer.rewind();
    i1 = buffer.getInt();
    i2 = buffer.getInt();
    i3 = buffer.getInt();