3

ソケットからgetInputStream()メソッドを使用して取得したバイトストリームがあります。オフセットnを使用してこのストリームから1バイトまたは2バイトを読み取り、それらを整数に変換する方法。ありがとう!

4

1 に答える 1

2

DataInputStreamプリミティブ型を読み取ることができる使用を試みることができます。

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 に答える