Java эквивалент Python для struct.pack? - PullRequest
17 голосов
/ 09 июля 2010

Есть ли какая-либо функция, эквивалентная struct.pack Python в Java, которая позволяет мне упаковывать и распаковывать такие значения?

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

Ответы [ 4 ]

8 голосов
/ 09 июля 2010

Я думаю, что после вас может быть 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();
3 голосов
/ 23 августа 2012

Примерно так:

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();
1 голос
/ 07 июля 2014

Я начал разработку проекта, очень близкого к Python Struct: java-binary-block-parser в JBBP это будет выглядеть как

JBBPOut.BeginBin().Int(0,0).Short(21,96).Int(512).End().toByteArray();
1 голос
/ 09 июля 2010

Ближайшая функция в ядре Java - Сериализация .Преобразует объект в последовательность байтов и обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...