From: <no...@so...> - 2002-10-29 12:06:35
|
Patches item #577728, was opened at 2002-07-05 12:06 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=312867&aid=577728&group_id=12867 Category: None Group: None Status: Open Resolution: Accepted Priority: 5 Submitted By: Josselin PUJO (pjosselin) Assigned to: Nobody/Anonymous (nobody) Summary: struct.java now accepts 64bits ints Initial Comment: In CPython, the struct module can manage 64 bits integers in unsigned and signed form with the 'Q' or 'q' format code. This patch duplicates this missing functionnality in Jython. Patch as attached file, simple test script folows from struct import * #unsigned long check try: pack('<Q',-1) print 'Error: unsigned long should not work' except error: pass try: pack('>Q',-1) print 'Error: unsigned long should not work' except error: pass big_long=0x10000000000000000L #oversized unsigned long check try: print pack('<Q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass try: print pack('>Q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass #oversized positive signed long check try: print pack('<q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass try: print pack('>q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass #oversized negative signed long check big_long=-big_long try: print pack('<q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass try: print pack('>q',big_long) print 'Error, should not try to pack >64bits ints' except OverflowError: pass u_data=(0x1L,0x10000L,0x100000000L) s_data=(0x1L,-0x10000L,0x0FFFFFFFFL,-0x100000000L) #internal pack-unpack coherence check s=pack('<QQQ',u_data[0],u_data[1],u_data[2]) if u_data!=unpack('<QQQ',s): print "internal coherence error: %s ==> %s ==> %s"%(`u_data`,`s`,`unpack('<QQQ',s)`) s=pack('>QQQ',u_data[0],u_data[1],u_data[2]) if u_data!=unpack('>QQQ',s): print "internal coherence error: %s ==> %s ==> %s"%(`u_data`,`s`,`unpack('>QQQ',s)`) s=pack('<qqqq',s_data[0],s_data[1],s_data[2],s_data[3]) if s_data!=unpack('<qqqq',s): print "internal coherence error: %s ==> %s ==> %s"%(`s_data`,`s`,`unpack('<qqqq',s)`) s=pack('>qqqq',s_data[0],s_data[1],s_data[2],s_data[3]) if s_data!=unpack('>qqqq',s): print "internal coherence error: %s ==> %s ==> %s"%(`s_data`,`s`,`unpack('>qqqq',s)`) #external unpack coherence check string_from_CPython='\x00\x00\x00\x00\x00\x01\x11p\xff\xff\xff\xff\xff\xfe\xc7\x80\xff\xff\xff\xff\xff\xff\xff\xfb\x00\x00\x00\x00\x00\x018\x80' if (70000,-80000,-5,80000)!=unpack('!Qqqq',string_from_CPython): print 'Error unpacking from CPython !' ---------------------------------------------------------------------- >Comment By: Finn Bock (bckfnn) Date: 2002-10-29 13:06 Message: Logged In: YES user_id=4201 Added as struct.java: 2.7; The patch is a step in the right direction, but it does not implement the funtionallity correctly. For example, the test_struct still fails for some long values. If you want to, an other patch that allows dist/test/test_struct.py to complete will be very welcome. ---------------------------------------------------------------------- Comment By: Finn Bock (bckfnn) Date: 2002-10-29 12:07 Message: Logged In: YES user_id=4201 Added as struct.java: 2.7; The patch is a step in the right direction, but it does not implement the funtionallity correctly. For example, the test_struct still fails for some long values. If you want to, an other patch that allows dist/test/test_struct.py to complete will be very welcome. ---------------------------------------------------------------------- Comment By: Josselin PUJO (pjosselin) Date: 2002-07-05 12:20 Message: Logged In: YES user_id=289277 Grr, my python test file did NOT like sourceforge formatting, resent attached ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=312867&aid=577728&group_id=12867 |