2010-08-16 4 views
1

В python длинные целые числа имеют неограниченный диапазон. Есть ли простой способ преобразования двоичного файла (например, фотографии) в одно длинное целое число?Как преобразовать двоичный файл в длинное целое?

+0

Не могли бы вы подробнее рассказать об использовании? Также это сильно поможет, если вы указали версию Python. – Skurmedel

ответ

3

Используя bitstring модуль это просто:

bitstring.BitString(filename='your_file').uint 

При желании вы можете получить целое число, используя int свойства.

Внутренне это используется struct.unpack для преобразования кусков байтов, что более эффективно, чем выполнение этого байта.

3

Вот один из способов сделать это.

def file_to_number(f): 
    number = 0 
    for line in f: 
     for char in line: 
      number = ord(char) | (number << 8) 
    return number 

Вы можете получить MemoryError в конце концов.

+1

Поскольку это двоичный файл, я не уверен, что имеет смысл перебирать строки (я не уверен, что это тоже вредно, но в этом случае строка просто не имеет смысла). –

+0

Конечно; это просто самый простой способ полу-лениво читать данные из файла. Если в файле f.read_chunks (4096) есть '' для фрагмента: 'или так, я бы использовал это. – habnabit

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