2013/11/8 Nathan Hurst <njh@njhurst.com>
Is there a nicer way to pass python long ints (bigint) into C
efficiently?  I'm currently cutting the value up into 64 bit chunks in
python and passing in as an unsigned long*:

cdef("int bigInt(int n, unsigned long* x);")

x = sum(1 << i for i in [100,200,123])
xs = []
while x > 0:
    xs.append(x & ((1 << 64) - 1))
    x >>= 64
print lib.bigInt(len(xs), xs)

but this is quite slow, and it seems like this data must already be
lurking somewhere in exactly the right form.

In Python3 you could use the to_bytes() method of ints,
but I could not find any way to have the same in python2. 

Or just use hex(). You might have endianness issues, though.


--
Amaury Forgeot d'Arc