2013-04-30 4 views
0

Я создал список размером 100 и заполнил массив 8-битными данными на python, используя следующий код, и я хочу вычислить значение CRC с помощью функции zlib.crc32().Расчет CRC с использованием функции Python 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, я не получаю никакого значения обратно.

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

+0

Ваш код выглядит немного странно. 'Init_RangenCrc8 = []' должен быть до цикла 'for', не так ли? Отступ не выглядит правильным. –

ответ

7
>>> 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 
+1

Вы пропустили начальное значение '0xFFFF'. Тем не менее +1. –

+0

Какая ошибка вы получаете? Кроме того, вам нужен crc32 для каждого элемента списка или один crc32 для строки, состоящей из каждого символа в списке? – sberry

+2

Первый аргумент должен быть строкой, потому что именно так определяется API. Что касается ошибки, вам нужно «импортировать zlib» и «import random» для работы этого решения, что является правильным решением с учетом вашего описания. – sberry

Смежные вопросы