1

これをJavaで書く必要があります。

ファイルの読み取り方法は知っていますが、「buff」出力とは何かに興味があります。最初の長さはどれくらいですか?

char              *buff;
unsigned char     *aux;


while(fgets (buff+2, length, fin)){
    len = strlen (buff + 2) + 2;
    aux = (unsigned char *) &len;
    buff[1] = aux[0];
    buff[0] = aux[1];
    ...
    send (sd, buff, len, 0);

}

しかし、私はこれを理解していません:

aux = (unsigned char *) &len;
buff[1] = aux[0];
buff[0] = aux[1];

前もって感謝します。

4

2 に答える 2

0

buffファイルからデータを読み取るために使用されるバッファのようです。lenプログラムは、最大2(sizeof(unsigned char))バイトの長さであると想定しているようです。したがって、のアドレスをとして解析lenし、の最下位2バイトを取得して、の最下位2バイトに貼り付けることにより、の最下位2バイトをにパックします。buf[1:0]lenunsigned char *lenbuff

于 2012-10-04T19:18:46.403 に答える
0

このコード:

aux = (unsigned char *) &len;
buff[1] = aux[0];
buff[0] = aux[1];

に格納されている整数値のバイト配列ビューを作成しますlen。Javaでは、まったく同じことを行うことはできませんが、いくつかの方法で必要なものを取得できます。最も簡単なのは、ビットマスキングとシフトを使用することです。

int len = ...;
byte[] buff = ...;
byte[0] = (byte) (len & 0xff);
byte[1] = (byte) ((len >> 8) & 0xff);

別の可能性はを使用するByteBufferことですが、それはそのような単純な操作にはやり過ぎのようです。

于 2012-10-04T19:37:50.173 に答える