我已使用 struct.pack 将信息写入 python 中的文件 例如。
out.write( struct.pack(">f", 1.1) );
out.write( struct.pack(">i", 12) );
out.write( struct.pack(">3s", "abc") );
然后我使用DataInputStream
和readInt
、readFloat
和readUTF
在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/