Как читать String в Java, который был написан с помощью метода python struct.pack - PullRequest
2 голосов
/ 10 августа 2009

Я записал информацию в файл на python, используя struct.pack например.

out.write( struct.pack(">f", 1.1) );
out.write( struct.pack(">i", 12) );
out.write( struct.pack(">3s", "abc") );

Затем я читаю его в Java, используя DataInputStream и readInt, readFloat и readUTF. Считывание чисел работает, но как только я звоню readUTF(), я получаю EOFException.

Я полагаю, это из-за различий в формате записываемой строки и способе ее чтения в Java, или я что-то не так делаю?

Если они несовместимы, есть ли другой способ чтения и записи строк?

1 Ответ

4 голосов
/ 10 августа 2009

Формат, ожидаемый readUTF(), задокументирован здесь . Короче говоря, он ожидает 16-битную длину с прямым порядком байтов, за которой следуют байты строки. Итак, я думаю, что вы могли бы изменить свой пакетный вызов, чтобы он выглядел примерно так:

s = "abc"
out.write( struct.pack(">H", len(s) ))
out.write( struct.pack(">%ds" % len(s), s ))

Мой Питон немного ржавый, но я думаю, что это близко. Также предполагается, что короткое замыкание (>H) составляет 16 бит.

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