2.3 -> 2.4: long int too large to convert to int
chrisperkins99 at gmail.com
chrisperkins99 at gmail.com
Thu Sep 15 19:11:40 EDT 2005
Grant Edwards wrote:
> I give up, how do I make this not fail under 2.4?
>
> fcntl.ioctl(self.dev.fileno(),0xc0047a80,struct.pack("HBB",0x1c,0x00,0x00))
>
> I get an OverflowError: long int too large to convert to int
>
> ioctl() is expecting a 32-bit integer value, and 0xc0047a80 has
> the high-order bit set. I'm assuming Python thinks it's a
> signed value. How do I tell Python that 0xc0047a80 is an
> unsigned 32-bit value?
>
You could sort-of fake it like this,
def unsigned(val):
return struct.unpack('i', struct.pack('I', val))[0]
fcntl.ioctl(self.dev.fileno(), unsigned(0xc0047a80), ...)
but good luck writing a docstring explaining why a function called
"unsigned" takes a positive long and returns a negative int... ;)
Chris Perkins
More information about the Python-list
mailing list