2009-08-10 5 views
0

D'abord j'écrire l'entier en utilisant python:
out.write(struct.pack(">i", int(i)));Problème de lecture d'un entier en Java qui a été écrit en utilisant la méthode struct.pack de python

je puis lire l'entier en utilisant DataInputStream.readInt() en Java.
Je fonctionne, mais quand il essaie de lire le numéro 10, et probablement d'autres nombres aussi, il commence à lire les ordures.
Lecture: les numéros
0, 4, 5, 0, 5, 13, 10, 1, 5, 6
Java est ainsi libellé:
0, 4, 5, 0, 5, 13, 167772160, 16777216, 83886080

Qu'est-ce que je fais mal?

Répondre

7

débogage psychique: Vous écrivez la sortie en mode texte sur Windows en utilisant le code comme ceci:

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

et qui est de faire votre 13 (ce qui est un saut de ligne) retour/saut de ligne de transport deviennent (10, 13).

Vous devez écrire votre sortie en mode binaire:

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

Bien sûr! Vous devez écrire en mode binaire pour écrire des données binaires. Ça ne m'a même pas traversé l'esprit. Merci. – cmann

+4

+1 pour débogage psychique –

+0

+1 très bonne prise en charge – mhawke

Questions connexes