Имейте в виду, что в jython при работе под Java все является «Big-Endian» независимо от того, на какой платформе вы находитесь, тогда как на платформе PC / Linux / Mac (x86) python - это Little Endian. Убедитесь, что при использовании struct.pack и struct.unpack вы используете соответствующий префикс
без префикса
запись данных (enessw.py)
import struct
f = file('tmp.dat', 'wb') # binary
f.write(struct.pack('IIII', 1,2,3,4)) # default endianess
чтение данных (enessr.py)
import struct
f = file('tmp.dat', 'rb')
data = f.read()
ints = struct.unpack('IIII', data) # default endianess
print repr(ints)
Результаты
Пишите с помощью Python, читайте с помощью Jython
C:\Documents and Settings\mat99856\My Documents\tmp>python enessw.py
C:\Documents and Settings\mat99856\My Documents\tmp>python enessr.py
(1, 2, 3, 4)
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessr.py
(16777216L, 33554432L, 50331648L, 67108864L)
Запись с использованием jython, чтение с использованием python
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessw.py
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessr.py
(1L, 2L, 3L, 4L)
C:\Documents and Settings\mat99856\My Documents\tmp>python enessr.py
(16777216, 33554432, 50331648, 67108864)
Исправление
Используйте <в строке формата для упаковки и распаковки. Это даст команду pack / unpack, что данные должны иметь формат с прямым порядком байтов. </p>
С '
C:\Documents and Settings\mat99856\My Documents\tmp>python enessw.py
C:\Documents and Settings\mat99856\My Documents\tmp>python enessr.py
(1, 2, 3, 4)
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessr.py
(1L, 2L, 3L, 4L)
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessw.py
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessr.py
(1L, 2L, 3L, 4L)
C:\Documents and Settings\mat99856\My Documents\tmp>python enessw.py
C:\Documents and Settings\mat99856\My Documents\tmp>python enessr.py
(1, 2, 3, 4)
C:\Documents and Settings\mat99856\My Documents\tmp>jython enessr.py
(1L, 2L, 3L, 4L)
Ссылки
struct.pack