Вам действительно нужно привести пример ввода и того, что вы ожидаете получить. Любой код, который использует последнюю версию Python, извлекает целое число в диапазоне (256) из каждого байта, суммирует эти целые числа и, наконец, total &= 0xFFFFFFFF
должен выполнить свою работу (предполагая, что ваш unsigned long
имеет ширину 32 бита).
Обратите внимание, что последний шаг (&=
) не имеет смысла, если ваш файл имеет размер менее 16 МБ ... он не переполнится; 16843009 * 255 <= 0xFFFFFFFF <(16843009 + 1) * 255 </p>
Это означает, что если ваш тестовый файл меньше 16843010 байт, у вас должна быть проблема в коде C или в коде Python или обоих.
Вы сказали, что "конечно" этот код:
f=open("file_to_sum",'rb')
m = f.read()
f.close()
sum( array.array('B', m) )
"не работает". Работает ли, если вы замените последнюю строку на
print sum( array.array('B', m) )
Если ничего из вышеперечисленного не поможет, и вам нужны разумные ответы, а не догадки, укажите пример ввода, ожидаемый вывод, код C, вывод C, код Python, вывод Python. И код C, и код Python должны быть автономно управляемыми и должны включать печать размера байтового массива, суммируемого.