CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[python]lire fichier binaire bit a bit?

Eauquai
Eauquai
Niveau 9
08 juin 2013 à 00:56:23

Bonjour bonjour,

J'aimerais pouvoir lire et manipuler un fichier binaire bit a bit en python.

Malgré mes recherches, je ne trouve pas comment faire : le mieux que je puisse faire est ceci :

f = open("monFichier", "ab+")
c = "debut" #osef, c'est juste pour declarer c
f.seek(0)
while c != "":
c = f.read(1)
print c
f.close()

Ceci lit le fichier byte par byte évidemment. De plus, la représentation qui m'en est donnée est en exadécimale/ascii lorsque correspondance il y a.

Merci beaucoup pour votre aide

Eauquai
Eauquai
Niveau 9
08 juin 2013 à 00:57:25

Si jamais, le f close est évidemment en dehors du while. Les deux lignes qui suivent le while sont en-dedans de ce dernier.

Eauquai
Eauquai
Niveau 9
08 juin 2013 à 01:05:53

Ok bon, j'ai avancé dans mes recherches. Si jamais ça intéresse quelqu'un :

f = open(fn, "ab+")
byte = "debut"
while True:
byte = f.read(1)
if byte != "":
byte = ord(f.read(1))
byte = bin(byte)[2:].rjust(8, '0')
print byte
else:
break
f.close()

Eauquai
Eauquai
Niveau 9
08 juin 2013 à 01:55:26

Bon, voilà où j'en suis.

J'arrive à afficher les bits. Mais maintenant j'aimerais pouvoir les changer un à un.

Pour commencer, en fait je n'arrive pas à copier le fichier de la manière suivante :

http://pastebin.com/FLXPpzuY

Pourquoi selon vous cela ne fonctionne pas ? Le fichier target.txt contient les chiffres composant les octets du fichier source, alors qu'il devrait être une copie parfaite de ce dernier...

anothercodeds
anothercodeds
Niveau 9
08 juin 2013 à 17:13:16

Je crois que tu dois écrire des caractères avec g.write().

Je ferais:

...
byte = bin(byte)[2:].rjust(8, '0')

    1. ...
    2. Modification de byte
    3. ...

byte = int(byte, 2)
g.write('%c' % byte)

Eauquai
Eauquai
Niveau 9
08 juin 2013 à 18:31:08

Merci beaucoup, c'était effectivement ça :ok:

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment