Вычисление CRC с использованием функции Python zlib.crc32

Я создал список размером 100 и заполнил массив 8-битными данными в python, используя следующий код, и я хочу вычислить значение CRC с помощью функции zlib.crc32().

Init_RangenCrc8 = []
for i in range(0,100):
    Init_RangenCrc8.append(random.randrange(0, 255, 1))

crc8_python = zlib.crc32(Init_RangenCrc8, 0xFFFF) 

Когда я возвращаюсь и печатаю crc8_python, я не получаю никакого значения.

Любая помощь будет оценена, спасибо.


person Chris Row    schedule 30.04.2013    source источник
comment
Ваш код выглядит немного странно. Init_RangenCrc8 = [] должен быть перед циклом for, не так ли? Отступ выглядит неправильно.   -  person Craig McQueen    schedule 30.04.2013


Ответы (1)


>>> help(zlib.crc32)
Help on built-in function crc32 in module zlib:

crc32(...)
    crc32(string[, start]) -- Compute a CRC-32 checksum of string.

    An optional starting value can be specified.  The returned checksum is
    a signed integer.
>>> zlib.crc32("".join(chr(random.randrange(0,255)) for _ in xrange(100)))
333158331

EDIT: код, использующий начальное значение 0xFFFF:

>>> text = "".join(chr(random.randrange(0,255)) for _ in xrange(100))

>>> zlib.crc32(text)
-964269250

>>> zlib.crc32(text, 0xFFFF)
2057263175
person Matt Anderson    schedule 30.04.2013
comment
Вы пропустили начальное значение 0xFFFF. Тем не менее +1. - person Cristian Ciupitu; 30.04.2013
comment
Какую ошибку вы получаете? Кроме того, вам нужен crc32 для каждого элемента списка или один crc32 для строки, состоящей из каждого символа в списке? - person sberry; 30.04.2013
comment
Первый аргумент должен быть строкой, потому что именно так определен API. Что касается ошибки, вам нужно import zlib и import random, чтобы это решение заработало, что является правильным решением, учитывая ваше описание. - person sberry; 30.04.2013
comment
@Крис Роу; вам нужно сначала импортировать zlib, чтобы использовать содержимое модуля. Также почему первый аргумент должен быть строкой? -- это то, что документация говорит, что функция принимает. Если задокументировано, что он принимает тип данных, он, вероятно, не будет работать правильно, если вы дадите ему ввод другого типа. - person Matt Anderson; 30.04.2013