Java - 有二进制流吗?

时间:2013-07-09 15:14:59

标签: java arrays operators

我有一个问题。

是否有库或其他组成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 个答案:

答案 0 :(得分: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的字节。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

Integer.byteValue();
Double.byteValue();
String.getBytes();
// etc.

答案 3 :(得分:0)

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