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();

这是我的数据包生成器的一个示例,我想简化它,但在数据包中我只使用短裤、整数和字符串。

4

4 回答 4

5

java.io.ByteArrayOutputStream是一种流实现,它在内部字节数组上收集内容,您可以将其包装在 ajava.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

http://docs.oracle.com/javase/7/docs/api/

Integer.byteValue();
Double.byteValue();
String.getBytes();
// etc.
于 2013-07-09T15:19:56.360 回答
0

看看String#getBytesByteBuffer。根据您的用例,字符集和字节顺序可能很重要。

于 2013-07-09T15:20:34.440 回答
0

是的。请参阅java.io.ByteArrayOutputStream。请注意,您可以包装此流以支持写入其他类型,例如 String:PrintWriter pw = new PrintWriter(yourByteArrayOutputStream); pw.print("Hello");

然后用于yourByteArrayOutputStream.toByteArray();获取字节数组。

于 2013-07-09T15:16:54.543 回答