3

我有字节流,是通过使用套接字中的 getInputStream() 方法获得的。如何从此流中读取偏移量为 n的 1 或 2 个字节并将它们转换为整数。谢谢!

4

1 回答 1

2

您可以尝试使用DataInputStreamwhich 允许您读取原始类型:

DataInputStream dis = new DataInputStream(...your inputStream...);
int x = dis.readInt();

UPD:更具体地说,您可以使用readInt()方法代码:

    int ch1 = in.read();
    int ch2 = in.read();
    int ch3 = in.read();
    int ch4 = in.read();
    if ((ch1 | ch2 | ch3 | ch4) < 0)
        throw new EOFException();
    return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));

UPD-2:如果您读取 2 字节数组并确定它包含完整的整数,请尝试以下操作:

    int value = (b2[1] << 8) + (b2[0] << 0)

UPD-3: Pff,完整的方法:

public static int read2BytesInt(InputStream in, int offset) throws IOException {

    byte[] b2 = new byte[2];
    in.skip(offset);
    in.read(b2);

    return (b2[0] << 8) + (b2[1] << 0);
}
于 2013-01-10T16:58:44.730 回答