在使用python的struct.pack方法编写的java中读取Integer时出现问题

时间:2009-08-10 23:57:19

标签: java python

首先我使用python写入整数:
out.write( struct.pack(">i", int(i)) );

然后我在Java中使用DataInputStream.readInt()读取整数 我工作,但当它试图读取数字10,也可能是其他一些数字, 它开始读垃圾。
读数字:
0, 4, 5, 0, 5, 13, 10, 1, 5, 6
Java读取:
0, 4, 5, 0, 5, 13, 167772160, 16777216, 83886080

我做错了什么?

1 个答案:

答案 0 :(得分:7)

心理调试:您使用以下代码在Windows上以文本模式编写输出:

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

这使你的13(这是换行符)成为回车/换行符(10,13)。

您需要以二进制模式编写输出:

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