2010-08-16 8 views
1

En python, les entiers longs ont une portée illimitée. Existe-t-il un moyen simple de convertir un fichier binaire (par exemple, une photo) en un seul entier long?Comment convertir un fichier binaire en un entier long?

+0

Pourriez-vous élaborer sur le cas d'utilisation? En outre, il serait grandement utile si vous avez spécifié la version Python. – Skurmedel

Répondre

3

L'utilisation du module bitstring il est juste:

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

Si vous préférez, vous pouvez obtenir un entier signé en utilisant la propriété int.

En interne, cela utilise struct.unpack pour convertir des blocs d'octets, ce qui est plus efficace que de le faire par octet.

3

Voici une façon de le faire.

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

Vous pourriez obtenir un MemoryError finalement.

+1

Puisqu'il s'agit d'un fichier binaire, je ne suis pas sûr qu'il soit logique d'itérer sur les lignes (je ne suis pas sûr que ce soit nuisible non plus, mais une ligne n'est pas significative dans ce cas). –

+0

Bien sûr; c'est simplement la manière la plus simple de lire des données à moitié paresseusement dans un fichier. S'il y avait un 'pour chunk dans f.read_chunks (4096):' ou alors, je l'aurais utilisé. – habnabit

Questions connexes