Java相当于Python的struct.pack?

时间:2010-07-09 04:44:51

标签: java python struct pack

在Java中是否有任何与Python的struct.pack等效的函数允许我打包和解压这样的值?

pump_on = struct.pack("IIHHI", 0, 0, 21, 96, 512)

4 个答案:

答案 0 :(得分:8)

我认为你所追求的是ByteBuffer

ByteBuffer pump_on_buf = ...
pump_on_buf.putInt(0);
pump_on_buf.putInt(0);
pump_on_buf.putShort(21);
pump_on_buf.putShort(96);
pump_on_buf.putInt(512);
byte[] pump_on = pump_on_buf.array();

答案 1 :(得分:3)

这样的事情:

final ByteArrayOutputStream data = new ByteArrayOutputStream();
final DataOutputStream stream = new DataOutputStream(data);
stream.writeUTF(name);
stream.writeUTF(password);
final byte[] bytes = stream.toByteArray(); // there you go

稍后,您可以阅读该数据:

final DataInputStream stream = new DataInputStream(
  new ByteArrayInputStream(bytes)
);
final String user = stream.readUTF();
final String password = stream.readUTF();

答案 2 :(得分:1)

核心Java中最近的功能是Serialization。它将对象转换为字节序列并返回。

答案 3 :(得分:1)

我开始开发与Python Struct非常接近的项目:java-binary-block-parser 在JBBP中它看起来像

JBBPOut.BeginBin().Int(0,0).Short(21,96).Int(512).End().toByteArray();