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

lecture d'un fichier Hexa

20 réponses
Avatar
Dany
Bonjour
J'ai un fichier encodé en Hexadecimale et je voudrais pour voir le lire,
normalement c'est à dire:
Quand j'ouvre mon fichier hexadecimle avec un fopen tout bete il s'ouvre
comme sous notepas (avec des caractere bizare). Je veux pouvoir l'ouvrire
comme un interpreteur Hexadecimele (avec les valeur Hexa ex: "FF11A2").
Voila merci d'avance

Dany

10 réponses

1 2
Avatar
Christophe Lephay
"Dany" a écrit dans le message de
news:bf8i6a$4b6$
Bonjour
J'ai un fichier encodé en Hexadecimale et je voudrais pour voir le lire,
normalement c'est à dire:
Quand j'ouvre mon fichier hexadecimle avec un fopen tout bete il s'ouvre
comme sous notepas (avec des caractere bizare). Je veux pouvoir l'ouvrire
comme un interpreteur Hexadecimele (avec les valeur Hexa ex: "FF11A2").
Voila merci d'avance


Si je comprends bien tu as ouvert le fichier en mode texte au lieu de
l'ouvrir en mode binaire...

Chris

Avatar
Benoit Dejean
Le Fri, 18 Jul 2003 13:16:32 +0200, lecyborg a écrit :


morceau de lexemple de la fct itoa de msdn, je pense que ca repondra a
ta questio:

Example
/* ITOA.C: This program converts integers of various
* sizes to strings in various radixes. */

#include <stdlib.h>
#include <stdio.h>

_itoa(


[...]

c'est du C et non standard. très mauvaise blague

--
"Ne perdez pas de vue qu'un programme rapide
et incorrect est d'une utilité presque nulle."
Ce qui est loin d'être incompatible avec la notion d'Art.

Avatar
Benoit Dejean
Le Fri, 18 Jul 2003 13:40:31 +0200, Christophe Lephay a écrit :

"Dany" a écrit dans le message de
news:bf8i6a$4b6$
Bonjour
J'ai un fichier encodé en Hexadecimale et je voudrais pour voir le
lire, normalement c'est à dire:
Quand j'ouvre mon fichier hexadecimle avec un fopen tout bete il
s'ouvre comme sous notepas (avec des caractere bizare). Je veux pouvoir
l'ouvrire comme un interpreteur Hexadecimele (avec les valeur Hexa ex:
"FF11A2"). Voila merci d'avance


Si je comprends bien tu as ouvert le fichier en mode texte au lieu de
l'ouvrir en mode binaire...


ifstream ifs("fichier.binaire", ios_base::in | ios_base::binary)

pour une lecture binaire


et après il me semble que c'est ça que tu recherche

#include <iostream>

using namespace std;

int main()
{
cout << hex << 0xdeadbeef << endl
<< dec << 123456789 << endl
<< hex << 123456789 << endl;
}

--
"Ne perdez pas de vue qu'un programme rapide
et incorrect est d'une utilité presque nulle."
Ce qui est loin d'être incompatible avec la notion d'Art.


Avatar
Dany
Salut

ios::binary ne transforme pas mes donnees en binaire elle reste telle quelle
cad en hexa.

Par contre je l'ai deja tester toute seul ça marchais.

Mais la j'ai une serie de 230400 valeurs à ecrire dans le fichier texte et
ios::binary ecris que la premiere valeur alors j'avais utilisais ios::app |
ios::binary mais dans ce cas ios::binary n'a pas d'effet.

Sais tu pourkoi?

Dany
Avatar
Jean-Marc Bourguet
"Dany" writes:

ios::binary ne transforme pas mes donnees en binaire elle reste telle quelle
cad en hexa.


Tu as l'air d'avoir des problemes de comprehension des concepts de base:

1/ std::binary ne joue que sur la maniere dont les lignes sont
traitees. Sous Unix ca fait rien, sous Windows ca change les CR LF en
LF et sous MacOS < MacOSX ca change les CR en LF et sous MacOSX j'en
sais rien (a priori c'est comme sous Unix mais sait on jamais).

2/ binaire ou hexa ce n'est qu'une maniere de presenter des valeurs
http://www.bourguet.org/data.html

Pour la suite, montre un exemple de code avec ce que tu optiens et ce
a quoi tu t'attends.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Christophe Lephay
"Dany" a écrit dans le message de
news:bf8t1k$8ii$
ios::binary ne transforme pas mes donnees en binaire elle reste telle
quelle

cad en hexa.


Arf, tu continues à mélanger deux choses distinctes. Il y a fondamentalement
deux types de fichiers distincts : les fichiers textes et les fichiers
binaires. Une différence essentielle, c'est l'interpretation de certains
octets (notemment le caractère EOF indiquant la fin de fichier d'un fichier
texte).

Quand tu ouvres un fichier binaire dans un éditeur de texte, tu as en
général une suite d'octets complètement incompréhensibles (certains n'étant
pas affichés, le cas échéant). Quand tu l'ouvres avec une application
adaptée, les données sont en général affichées en hexadécimal car ils
permettent une représentation avec un nombre fixe de caractères.

Par contre je l'ai deja tester toute seul ça marchais.

Mais la j'ai une serie de 230400 valeurs à ecrire dans le fichier texte et
ios::binary ecris que la premiere valeur alors j'avais utilisais ios::app
|

ios::binary mais dans ce cas ios::binary n'a pas d'effet.


Poste ton code...

Sais tu pourkoi?


é7 d'écrire en fran7, c + agréable à lire...

Chris

Avatar
Fabien LE LEZ
On Fri, 18 Jul 2003 16:48:07 +0200, "Christophe Lephay"
wrote:

(notemment le caractère EOF indiquant la fin de fichier d'un fichier
texte)


C'est de l'histoire ancienne, ça, non ?


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

On Fri, 18 Jul 2003 16:48:07 +0200, "Christophe Lephay"
wrote:

(notemment le caractère EOF indiquant la fin de fichier d'un
fichier texte)


C'est de l'histoire ancienne, ça, non ?


S'il veut parler de l'utilisation de SUB (code 26, ^Z) pour marquer la
fin des fichiers textes, c'est un vestige de CPM qui stockait les
tailles de fichiers en nombre de secteurs, ce marqueur de fin était
alors utile. La convention a été reprise par DOS mais les versions
que j'ai utilisée ont toujours permis de connaître la taille des
fichiers au byte près (peut être que c'était utile avec DOS 1...)

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
kanze
Jean-Marc Bourguet wrote in message
news:...
"Dany" writes:

ios::binary ne transforme pas mes donnees en binaire elle reste
telle quelle cad en hexa.


Tu as l'air d'avoir des problemes de comprehension des concepts de
base:

1/ std::binary ne joue que sur la maniere dont les lignes sont
traitees. Sous Unix ca fait rien, sous Windows ca change les CR LF en
LF et sous MacOS < MacOSX ca change les CR en LF et sous MacOSX j'en
sais rien (a priori c'est comme sous Unix mais sait on jamais).

2/ binaire ou hexa ce n'est qu'une maniere de presenter des valeurs
http://www.bourguet.org/data.html

Pour la suite, montre un exemple de code avec ce que tu optiens et ce
a quoi tu t'attends.


Je crois que ce qu'il faut, c'est de revenir à une chose que tu as dit
dans ton posting avant : un fichier, c'est une suite d'octets (dans la
pratique sur des machines courantes) dont l'interprétation dépend du
programme. La bibliothèque standard fournit trois couches
d'interprétation quasiment indépendantes :

- la detection des lignes et de la fin fichier, avec deux options,
choisies par la présence ou l'absence de l'option ios::binary lors
de l'ouverture,

- la translation des codes de caractères, choisie par le locale, et

- les conversions entre les formats textuels et la représentation
interne, des les opérateurs >> et <<.

Pour lire du binaire brut, il faut s'assurer que :

- la detection des lignes est supprimée et qu'on reconnaît la fin de
fichier binaire -- c'est l'option ios::binary,

- que la transcodage soit la fonction d'identité -- c'est le cas dans
le locale "C", et

- qu'il n'y a pas de conversions de formats -- on évite donc les >> et
les <<.

En général, les deux premières interprétations se trouvent dans
std::filebuf, la dernière dans istream. Si on veut lire un fichier
entier en format interne, il n'est donc par rare de se servir du filebuf
directement.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Fabien LE LEZ
On 21 Jul 2003 02:54:05 -0700, wrote:

En revanche, je ne sais pas si j'utiliserais le mot « ancien », parce
que c'est toujours supporté sous les dernières versions de VC++ sous les
dernières Windows, je crois. Si tu ouvres un fichier en mode texte, et
le fichier contient un 0x1A, la lecture s'arrête là.


Y a-t-il une raison valable à cela ? La norme en parle-t-elle ?


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

1 2