2009-08-10 110 views
0

首先編寫的Java整型我寫使用python整數:
out.write(struct.pack(">i", int(i)));問題閱讀在使用python的struct.pack方法

我然後閱讀在Java中使用DataInputStream.readInt()整數。
我工作,但當它試圖讀取數字10,也可能是其他一些數字, 它開始讀垃圾。
閱讀的數字:
0, 4, 5, 0, 5, 13, 10, 1, 5, 6
的Java寫着:
0, 4, 5, 0, 5, 13, 167772160, 16777216, 83886080

我在做什麼錯?

回答

7

心理調試:您正在使用這樣的代碼在Windows寫在文本模式下,輸出:

f = open("output.dat", "w") 
f.write(my_data) 

而這使你13(這是一個新行)成爲回車/換行符(10,13 )。

你需要寫你的輸出以二進制方式:

f = open("output.dat", "wb") 
f.write(my_data) 
+0

當然!你必須用二進制模式寫入二進制數據。 這甚至沒有跨過我的腦海。 謝謝。 – cmann 2009-08-11 00:08:09

+4

+1心理調試 – 2009-08-11 00:19:08

+0

+1精美皮卡 – mhawke 2009-08-11 00:38:54