java - 如何在java中读取使用python的struct.pack方法编写的字符串

标签 java python

我已使用 struct.pack 将信息写入 python 中的文件 例如。

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

然后我使用DataInputStreamreadIntreadFloatreadUTF在java中读取它。 读取数字是可行的,但是一旦我调用 readUTF(),我就会得到 EOFException

我认为这是因为写入的字符串格式和java读取它的方式不同,或者我做错了什么?

如果它们不兼容,是否有其他方法来读写字符串?

最佳答案

readUTF() 所需的格式记录在 here 中。简而言之,它需要 16 位大端长度,后跟字符串的字节。所以,我认为你可以修改你的 pack 调用,使其看起来像这样:

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

我的 Python 有点生疏,但我认为已经很接近了。它还假设短路(>H)是 16 位。

关于java - 如何在java中读取使用python的struct.pack方法编写的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1255918/

相关文章:

Java:Collection.sort() 与有序集与 PriorityQueue

python - 将套接字对象发送到 fork 运行进程(multiprocessing.Queue)

python - For 循环在达到条件之前结束

c# - C++ 性能与 Java/C#

java - 使用 Bottom Sheet 单中的接口(interface)

java - 按 XXX 排序的按钮

java - 为什么 Collection 不扩展 Cloneable 和 Serializable?

python - 如何按 Pandas 中的值对系列进行分组?

Python请求GET需要很长时间才能响应一些请求

python - Pandas:计算大写单词的数量