2009-08-10 76 views
2

我一直在使用struct.pack 如書面信息保存到文件中Python編寫的Java讀取字符串。如何在使用python的struct.pack方法

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

然後我用DataInputStreamreadIntreadFloatreadUTF讀它在java中。 閱讀的數字作品,但只要我打電話readUTF()我得到EOFException

我想這是因爲在字符串格式的差異被寫入和Java的方式讀取它,還是我做錯了什麼?

如果它們是不兼容的,有另一種方式來讀取和寫入字符串?

回答

4

通過readUTF()期望的格式,是記錄here。總之,它需要一個16位,大端長度後跟字符串的字節。所以,我認爲你可以修改你的電話看起來像這樣:

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

我的Python是有點生疏,但我認爲這是接近。它還假定一個短(該>H)爲16位。

+0

非常感謝,它的工作完美。 – cmann 2009-08-10 18:44:11

+0

很高興我能幫忙。 – 2009-08-10 19:09:20

相關問題