python 3.4, Windows 10, Cython 0.21.1OverflowError si verifica quando si utilizza Cython con una grande int
Sto compilando questa funzione per c con Cython
def weakchecksum(data):
"""
Generates a weak checksum from an iterable set of bytes.
"""
cdef long a, b, l
a = b = 0
l = len(data)
for i in range(l):
a += data[i]
b += (l - i)*data[i]
return (b << 16) | a, a, b
che produce questo errore: " OverflowError: Python int troppo grande per la conversione in C lungo "
Ho anche provato a dichiararli come unsigned long. Che tipo uso per lavorare con numeri veramente grandi? Se è troppo grande per un c lungo ci sono soluzioni alternative?
Che ne dici di 'cdef long long'? – szxk
stesso errore, il numero che lo sta causando è 2891688164113197 – user2682863
Considera di fare una grande classe intera? Sarà un elenco collegato che contiene le cifre –