|
|
 |
 |
 |
 |
Python Programming Language
|
 |
 |
 |
 |
 |
 |
 |
 |
struct.pack bug?
Hello I find the following inconsistent: === >>> sys.version '2.4.1a0 (#2, Feb 9 2005, 12:50:04) \n[GCC 3.3.5 (Debian 1:3.3.5-8)]' >>> pack('>B', 256) '\x00' >>> pack('<B', 256) '\x00' >>> pack('B', 256) Traceback (most recent call last): File "<stdin>", line 1, in ? struct.error: ubyte format requires 0<=number<=255 >>> === I was hoping that '>B' and '<B' would raise an exception, ust as 'B' does. On Oct 27 2006, 11:17 am, Jansson Christer reported a different anomoly to this newsgroup, using the same subject. -- Jonathan
On Feb 9, 8:58 am, Jonathan Fine <j@pytex.org> wrote:
> Hello > I find the following inconsistent: > === > >>> sys.version > '2.4.1a0 (#2, Feb 9 2005, 12:50:04) \n[GCC 3.3.5 (Debian 1:3.3.5-8)]' > >>> pack('>B', 256) > '\x00' > >>> pack('<B', 256) > '\x00' > >>> pack('B', 256) > Traceback (most recent call last): > File "<stdin>", line 1, in ? > struct.error: ubyte format requires 0<=number<=255 > === > I was hoping that '>B' and '<B' would raise an exception, > ust as 'B' does. > On Oct 27 2006, 11:17 am, Jansson Christer reported a > different anomoly to this newsgroup, using the same > subject.
Your Python is out-of-date in two dimensions: the 2.4 series is way past 2.4.1, and Python 2.5 has been out for a while. Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win 32 | >>> from struct import pack | >>> pack('<B', 256) | __main__:1: DeprecationWarning: 'B' format requires 0 <= number <= 255 | '\x00' Until the deprecation warning becomes an exception in 2.6, I'd suggest doing your own checking: assert 0 <= pack_B_candidate <= 255 HTH, John
|
 |
 |
 |
 |
|