Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Accès au code binaire d'un fichier

4 réponses
Avatar
wawaye
Bonjour,
Je suis en train de faire un programme dans lequel j'aimerais pouvoir
accéder au motif binaire d'un fichier spécifié (et pas le contenu du
fichier), pour y apporter des modifications (directement sur les bits -
c'est pour un programme de chiffrement), puis une fois ce travail fait
enregistrer le nouveau motif binaire en mémoire, sous un autre nom.
Ce qui me bloque ici c'est le fait donc que ce n'est pas au contenu du
fichier que je veux acceder, mais au code binaire...

Pouvez-vous me suggerer des solutions ? Merci...

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

4 réponses

Avatar
Vincent Lascaux
Ce qui me bloque ici c'est le fait donc que ce n'est pas au contenu du
fichier que je veux acceder, mais au code binaire...


As tu un exemple qui nous permettrait de comprendre la distinction que tu
fais entre "code binaire" et "contenu du fichier" ?

--
Vincent

Avatar
wawaye
Vincent Lascaux avait énoncé :
Ce qui me bloque ici c'est le fait donc que ce n'est pas au contenu du
fichier que je veux acceder, mais au code binaire...


As tu un exemple qui nous permettrait de comprendre la distinction que tu
fais entre "code binaire" et "contenu du fichier" ?


prenons un fichier texte, par ex
si on ouvre le fichier, on va avoir ... du texte ;) (bon évidemment je
pourrais récupérer ce texte pour le chiffrer, mais c un exemple, je
dois pouvoir traiter n'importe quel fichier de la meme manière)
si j'accèsde en mémoire à ce fichier, je vais avoir le code binaire du
fichier, et c'est ce code que je voudrais récupérer...

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
Vincent Lascaux
prenons un fichier texte, par ex
si on ouvre le fichier, on va avoir ... du texte ;) (bon évidemment je
pourrais récupérer ce texte pour le chiffrer, mais c un exemple, je dois
pouvoir traiter n'importe quel fichier de la meme manière)
si j'accèsde en mémoire à ce fichier, je vais avoir le code binaire du
fichier, et c'est ce code que je voudrais récupérer...


Du texte, c'est une suite de caracteres, et un caractere c'est un nombre
(stocké au format binaire sur la plus part des machines). En ASCII, 'a' = 97
= 0x61, quand tu lis 'a', tu lis une suite de bits (qui peuvent être
interprétés comme la lettre 'a' ou comme un nombre, ou comme une suite de
bits...).
Il y a toutes fois avec les flux standards deux modes d'ouverture : an
particulier, la façon dont sont encodés les retours à la ligne dépend de
l'OS. En ouvrant le fichier en mode texte, il y a une traduction qui est
faite entre les différentes représentations du retour à la ligne et la
représentation C++ ('n'), de façon à permettre du code portable. Si tu ne
veux pas de cette traduction, ouvre ton flux en mode binaire (cf
std::ios_base::binary)

--
Vincent

Avatar
James Kanze
wawaye wrote:
Vincent Lascaux avait énoncé :


Ce qui me bloque ici c'est le fait donc que ce n'est pas au
contenu du fichier que je veux acceder, mais au code
binaire...




As tu un exemple qui nous permettrait de comprendre la
distinction que tu fais entre "code binaire" et "contenu du
fichier" ?



prenons un fichier texte, par ex si on ouvre le fichier, on va
avoir ... du texte ;) (bon évidemment je pourrais récupérer ce
texte pour le chiffrer, mais c un exemple, je dois pouvoir
traiter n'importe quel fichier de la meme manière) si
j'accèsde en mémoire à ce fichier, je vais avoir le code
binaire du fichier, et c'est ce code que je voudrais
récupérer...


Il n'existe pas de texte en informatique. Il n'existe que des
bits, qu'on interprète comme on veut. En C++, c'est
particulièrement visible -- il n'y a même pas de type pour les
caractères. (Le type char, c'est un petit entier. Ensuite, on
peut « interpréter » certaines valeurs numériques comme des
caractères, si on veut. De même qu'avec int, d'ailleurs.)

Il y a une distinction à laquelle il faut faire attention. Le
C++, comme le C, définit deux types de fichiers, qu'il appèlle
texte et binaire. En fait, ce qui diffère, c'est surtout qu'un
fichier texte se divise en enrégistrements de longueur variable
(appelés lignes, et séparé dans le programme C++ par un
caractère 'n' seul, quelque soit les conventions du système),
et ne peut pas forcément contenir toutes les valeurs numérique
que peut contenir un char. Si donc tu souhaites manipuler les
bits sans les interpréter comme des caractères, il faut en
général ouvrir le fichier en mode binaire (mais rien n'empèche
d'interpréter le contenu d'un fichier ouvert en binaire comme
des caractères).

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34