0

次の Java コード スニペットでは、次の行が表示されます。packetLengthMax += bytes.toByteArray()[43]; 私の質問は次のとおりです。

byte[] dataBuffer = new byte[265];
int packetLength = 0;
int packetLengthMax = 44;
ByteArrayOutputStream   bytes       = new ByteArrayOutputStream();
DataOutputStream        outMessage  = new DataOutputStream(bytes);
/* Client = Socket*/
DataInputStream         clientIn    = new DataInputStream(Client.getInputStream());
while (packetLength < packetLengthMax) {
    packetLength += clientIn.read(dataBuffer);
    outMessage.write(dataBuffer);           
    if (packetLength >= 43) {
        packetLengthMax += bytes.toByteArray()[43];
    }
}

私の説明: まず、ソケット ( Client) がコードに渡されます。次に、すべての変数のセットアップを行います。while ループでは、ソケットからのすべてのデータを読み取ります。次に、このデータも に書き込みますDataOutputStream。しかし、ifステートメントでは、バイト配列を整数に追加します。
それはどのように機能しますか?その点がわかりません。助けてくれてありがとう!

4

1 に答える 1

1

バイト配列全体を追加するのではなく、位置 43 にバイトを追加するだけです (つまり、配列の 44 番目のバイト)。

于 2015-02-27T08:05:13.400 に答える