我使用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读取它的方式不同,或者我做错了什么?
如果它们不兼容,是否有另一种读写字符串的方法?
答案 0 :(得分:4)
readUTF()
期望的格式记录为here。简而言之,它期望一个16位的大端长度后跟字符串的字节。所以,我认为你可以修改你的打包电话看起来像这样:
s = "abc"
out.write( struct.pack(">H", len(s) ))
out.write( struct.pack(">%ds" % len(s), s ))
我的Python有点生疏,但我认为这很接近。它还假设短(>H
)是16位。