On Dec 11, 12:38 pm, Larry Bates <[EMAIL PROTECTED]> wrote: > Diez B. Roggisch wrote: > > Larry Bates wrote: > > >> eliss wrote: > >>> I'm using dl.call() to call a C function in an external library. It's > >>> working great so far except for one function, which returns an > >>> unsigned int in the C version. However, in python it returns a signed > >>> value to me. How can I get the unsigned value from this? I haven't > >>> brushed up on my two's complement in a while, so I was hoping someone > >>> could give me a hand. > > >>> Thanks > > >>> eliss > >> It is returning 32 bits. If the sign bit (bit 32) is on it appears as a > >> negative number. Test for negative and multiply the absolute value * 2. > >> That should get you the unsigned value you want in a long. > > > Erm... Nope. > > > All bits set is -1 - so according to your recipe, that would be abs(-1) * 2 > > = 2 > > > I'd suggest this formula: > > > if value < 0: > > value = 2^32 + value + 1 > > > Diez > > Thanks for the correction. You are of course correct. > > -Larry
Hi thanks for the responses but I'm afraid I don't see how either formula works. Lets say I get the return value of -5, which is 1011b when it should be 11. Then according to the formula it would be 2^4-5+1=12 But it should be 11... -- http://mail.python.org/mailman/listinfo/python-list