python 3.4, windows 10, cython 0.21.1
Я компилирую эту функцию в c 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
который производит эту ошибку: "OverflowError: Python int слишком большой, чтобы преобразовать в C long"
Я также пробовал объявлять их как unsigned longs. Какой тип я использую для работы с действительно большими числами? Если он слишком велик для длинных c, существуют ли какие-либо обходные пути?