C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

lecture d'un fichier Hexa
Goto page 1, 2  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Dany
Guest





PostPosted: Fri Jul 18, 2003 10:30 am    Post subject: lecture d'un fichier Hexa Reply with quote



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


Back to top
Christophe Lephay
Guest





PostPosted: Fri Jul 18, 2003 11:40 am    Post subject: Re: lecture d'un fichier Hexa Reply with quote



"Dany" <dany_tambicannou (AT) yahoo (DOT) fr> a écrit dans le message de
news:bf8i6a$4b6$1 (AT) news-reader1 (DOT) wanadoo.fr...
Quote:
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



Back to top
Benoit Dejean
Guest





PostPosted: Fri Jul 18, 2003 12:27 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote



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


Quote:
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 #include
_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.


Back to top
Benoit Dejean
Guest





PostPosted: Fri Jul 18, 2003 12:34 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

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

Quote:
"Dany" <dany_tambicannou (AT) yahoo (DOT) fr> a écrit dans le message de
news:bf8i6a$4b6$1 (AT) news-reader1 (DOT) wanadoo.fr...
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.


Back to top
Dany
Guest





PostPosted: Fri Jul 18, 2003 1:35 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

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




Back to top
Jean-Marc Bourguet
Guest





PostPosted: Fri Jul 18, 2003 2:02 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

"Dany" <dany_tambicannou (AT) yahoo (DOT) fr> writes:

Quote:
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

Back to top
Christophe Lephay
Guest





PostPosted: Fri Jul 18, 2003 2:48 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

"Dany" <dany_tambicannou (AT) yahoo (DOT) fr> a écrit dans le message de
news:bf8t1k$8ii$1 (AT) news-reader3 (DOT) wanadoo.fr...
Quote:
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.

Quote:
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...

Quote:
Sais tu pourkoi?

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

Chris



Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Jul 18, 2003 9:33 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

On Fri, 18 Jul 2003 16:48:07 +0200, "Christophe Lephay"
<christophe-lephay (AT) wanadoo (DOT) fr> wrote:

Quote:
(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

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Sat Jul 19, 2003 2:15 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Fri, 18 Jul 2003 16:48:07 +0200, "Christophe Lephay"
[email]christophe-lephay (AT) wanadoo (DOT) fr[/email]> 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

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Mon Jul 21, 2003 10:05 am    Post subject: Re: lecture d'un fichier Hexa Reply with quote

Jean-Marc Bourguet <jm (AT) bourguet (DOT) org> wrote

Quote:
"Dany" <dany_tambicannou (AT) yahoo (DOT) fr> 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:kanze (AT) gabi-soft (DOT) fr
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

Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Jul 21, 2003 5:57 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

On 21 Jul 2003 02:54:05 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

Quote:
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

Back to top
Christophe Lephay
Guest





PostPosted: Mon Jul 21, 2003 6:52 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:vbaohvg2iuu22jcl91fg2aqkkicv3lsqp5 (AT) 4ax (DOT) com...
Quote:
On 21 Jul 2003 02:54:05 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] 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 ?

Peut-être peut-on trouver des raisons dans les discussions passées (un peu
anciennes déjà) sur les possibilités ou impossibilités de connaitre
réellement la taille d'un fichier avant de l'avoir complètement lu ?

De fait, dans un système ou tout peut être considéré comme fichier, y
compris la console, il faut bien un moyen d'en indiquer la fin dans la
mesure où on ne peut pas connaitre sa taille à l'avance, me semble-t-il...

Chris



Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Jul 21, 2003 9:57 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

On Mon, 21 Jul 2003 20:52:10 +0200, "Christophe Lephay"
<christophe-lephay (AT) wanadoo (DOT) fr> wrote:

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

Peut-être peut-on trouver des raisons dans les discussions passées (un peu
anciennes déjà) sur les possibilités ou impossibilités de connaitre
réellement la taille d'un fichier avant de l'avoir complètement lu ?

Le langage C++ ne peut calculer la taille d'un fichier sans l'avoir
parcouru. L'OS, par contre, le peut très bien.

Quote:
De fait, dans un système ou tout peut être considéré comme fichier, y
compris la console, il faut bien un moyen d'en indiquer la fin dans la
mesure où on ne peut pas connaitre sa taille à l'avance, me semble-t-il...

Même chose ici : c'est au système d'exploitation de se débrouiller
pour savoir quand le fichier se termine. Le langage n'a pas à s'en
préoccuper -- quand le programme essaie de lire des octets alors que
la fin du fichier est atteinte, le système renvoie une erreur, que le
langage se contente de répercuter vers le programme.

Tu remarqueras d'ailleurs que le EOF des système Microsoft (et
peut-être aussi Unix), qui sert à indiquer "à la main" la fin de
l'entrée sur la console, est le caractère ^Z (0x1A je suppose), tandis
que le EOF du langage est -1.



--
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

Back to top
Christophe Lephay
Guest





PostPosted: Mon Jul 21, 2003 10:06 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:pvnohvs4vnuofujcs1v3i6hcp21kdha922 (AT) 4ax (DOT) com...
Quote:
On Mon, 21 Jul 2003 20:52:10 +0200, "Christophe Lephay"
[email]christophe-lephay (AT) wanadoo (DOT) fr[/email]> wrote:

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

Peut-être peut-on trouver des raisons dans les discussions passées (un
peu
anciennes déjà) sur les possibilités ou impossibilités de connaitre
réellement la taille d'un fichier avant de l'avoir complètement lu ?

Le langage C++ ne peut calculer la taille d'un fichier sans l'avoir
parcouru. L'OS, par contre, le peut très bien.

S'il en a une, et si elle est connue à l'avance (ce qui est le cas des
fichiers sur disque, bien entendu)

Quote:
De fait, dans un système ou tout peut être considéré comme fichier, y
compris la console, il faut bien un moyen d'en indiquer la fin dans la
mesure où on ne peut pas connaitre sa taille à l'avance, me
semble-t-il...

Même chose ici : c'est au système d'exploitation de se débrouiller
pour savoir quand le fichier se termine. Le langage n'a pas à s'en
préoccuper -- quand le programme essaie de lire des octets alors que
la fin du fichier est atteinte, le système renvoie une erreur, que le
langage se contente de répercuter vers le programme.

Et comment en informe-t-il l'application ?

Quote:
Tu remarqueras d'ailleurs que le EOF des système Microsoft (et
peut-être aussi Unix), qui sert à indiquer "à la main" la fin de
l'entrée sur la console, est le caractère ^Z (0x1A je suppose), tandis
que le EOF du langage est -1.

Au même titre que c'était '$' pour désigner une fin de chaine sur les
processeurs intel et non pas ''. C'est juste une question de convention,
celà ne veut pas dire pour autant que c'est inutile...

Chris



Back to top
Fabien LE LEZ
Guest





PostPosted: Mon Jul 21, 2003 10:46 pm    Post subject: Re: lecture d'un fichier Hexa Reply with quote

Prenons le code suivant :

void f (istream& is)
{
std::string ligne;
while (getline (is, ligne));
}

A chaque parcours de la boucle :

1- le programme demande au langage (plus précisément à la SL) de lire
une ligne
2- le langage demande à l'OS de lui envoyer un octet
-> si le fichier est terminé, l'OS refuse, et le langage met à 1
le bit qui va bien dans le istream, puis renvoie la main au programme
-> si le fichier n'est pas terminé, l'OS accepte ; le langage
examine cet octet, et s'il reconnaît l'octet de fin de ligne, il
renvoie la main au programme. Sinon, il revient en 2.

La détection de fin de fichier est la tâche de l'OS. Sur systèmes
"classiques" (Win/Unix), l'OS détecte la fin du fichier en comptant le
nombre d'octets lus s'il s'agit d'un vrai fichier, ou détecte la fin
du programme dans le cas d'un pipe, ou attend un "^Z" (0x1A) s'il
s'agit de la console. Le langage n'a à aucun moment la tâche de
s'occuper d'un éventuel caractère 0x1A.



--
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
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.