2

我有一个 Java 类,例如:

class Foo implements IBar
{
    // Methods ..

    // A bunch of fields of primitive types (int, String)
    int f1;
    int f2;
    String f3;
    // ...
}

我想将所有这些字段打包到字节数组中(不要问我为什么,这个限制是由以这种格式向我发送数据的 C++ 端引入的)。

我发现的唯一方法是使用ByteBuffer. 但这是我能想到的最糟糕的情况。代码如下所示:

ByteBuffer buf = ByteBuffer.allocate(4);

int offset = 0;

buf.putInt(f1);
System.arraycopy(buf.array(), 0, rawHeader, offset, 4);
offset += 4;

// A bunch of lines here (pack all other fields)

有谁知道更合适的方法吗?谢谢。

4

2 回答 2

4

使用DataOutputStream包装 a ByteArrayOutputStream

或者,如果您愿意,可以让您的类实现Serializable并使用ObjectOutputStream包装 a ByteArrayOutputStream。这当然会使字节数组只能由 Java 读取。

于 2012-12-14T15:27:04.953 回答
2

嗯……你可以试试看DataOutputStreamByteBufferStream它有方便的写原语的方法。作为回报,您有一个字节数组。

UPD:当然不是ByteBufferStream,但是ByteArrayOutputStream

于 2012-12-14T15:28:32.210 回答