1

1つ質問がありました。

int & 文字列をバイト配列に構成するライブラリなどはありますか?

お気に入り :

byte temparray[] = new byte[10];

int a = 10;
int b = 10;

temparray << new String("12") << a << b;

ありがとう。

編集

    byte[] buffer = new byte[649];

    byte[] charname = this.getName().getBytes();
    System.arraycopy(charname, 0 , buffer, 0, charname.length);

    for(int i=0;i<16;i++) //mystery crs 16 zeros
    {
        buffer[i+17] = (byte)0x30;
    }

    buffer[34] = this.faction;

    if(this.characterClass == 2)
    {
        buffer[40] = 2;      
    } else
    {
        buffer[40] = 1; 
    }
    System.arraycopy(BitTools.shortToByteArray(face), 0, buffer, 42, 2);
    buffer[44] = 1; 
    buffer[48] = (byte)this.characterClass; //class byte
    buffer[52] = 2; explanation yet

    buffer[54] = (byte)this.getLevel();

これは私のパケット ジェネレーターの例であり、単純化したかったのですが、パケットでは short、int、および string のみを使用しています。

4

4 に答える 4

5

java.io.ByteArrayOutputStreamは、内部バイト配列でコンテンツを収集するストリーム実装であり、java.io.OutputStreamWriter文字コンテンツを書き込むために でラップできます。

ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
Writer out = new OutputStreamWriter(byteOut, "UTF-8");  // Uses UTF-8 encoding
out.write("12");
out.write(10);
out.write(10);
out.close();

byte[] bytes = byteOut.toByteArray();

この後、bytes.lengthは に書き込まれるバイトにちょうど十分な長さですbyteOut

于 2013-07-09T15:16:59.617 に答える
0

はい。java.io.ByteArrayOutputStreamを参照してください。このストリームをラップして、String などの他の型の書き込みをサポートできることに注意してください。PrintWriter pw = new PrintWriter(yourByteArrayOutputStream); pw.print("Hello");

その後yourByteArrayOutputStream.toByteArray();、バイト配列を取得するために使用します。

于 2013-07-09T15:16:54.543 に答える