如何读取使用python的struct.pack方法编写的java中的String

时间:2009-08-10 16:38:51

标签: 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读取它的方式不同,或者我做错了什么?

如果它们不兼容,是否有另一种读写字符串的方法?

1 个答案:

答案 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位。