lire dans un fichier binaire en hexa (débutant)

lire dans un fichier binaire en hexa (débutant) - C++ - Programmation

Marsh Posté le 23-06-2004 à 16:12:40    

bonjour,
j'ai peu de documentation là dessus et mon problème est le suivant :
je veux afficher le 1er int en hexadecimal a l'écran, ce qui en théorie devrait donner un truc du genre "cdcd" soit deux octets, mais le hic c'est que j'ai 4 octets ("cdcdcdcd" ) au lieu de deux.
Pouvez vous m'aider ?
 

Code :
  1. fstream f("ant.3ds", ios::binary | ios::out );
  2. f.setf(16);
  3. int fileDescriptor = f.fd() ;
  4. _read(fileDescriptor, &balise, sizeof(int));
  5. cout<<hex<<balise<<endl ;


Message édité par beusser le 23-06-2004 à 16:15:25
Reply

Marsh Posté le 23-06-2004 à 16:12:40   

Reply

Marsh Posté le 23-06-2004 à 16:16:07    

... c'est quoi ce fordel ? déjà ton flux il est en sortie, donc tu peux pas lire dessus
 
tes bordel
 
f.setf(16);
   int fileDescriptor = f.fd() ;  
 
c'est de la merde sorti d'on ne sait où
 
 
alors ce que tu fais, tu ouvres un ifstream en binaire et tu utilise sa méthode .read http://cplusplus.com/ref/iostream/ifstream/
 
 
et si tu lis sizeof(int) "octets" et bien si tu as un PCx86, tu lis 4 octets. à toi de dire combien tu veux en lire, la machine va pas le deviner

Reply

Marsh Posté le 23-06-2004 à 16:17:24    

Citation :

je veux afficher le 1er int en hexadecimal a l'écran, ce qui en théorie devrait donner un truc du genre "cdcd" soit deux octets, mais le hic c'est que j'ai 4 octets ("cdcdcdcd" ) au lieu de deux.


Et pourquoi donc ?
La taille de int dépend de la plateforme. Chez toi c'est 32 bits = 4 octets. Utilise long/short.
Pourquoi passes-tu par le file descriptor ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 23-06-2004 à 16:19:23    

ben non, un int en décimal ça fait 4 octets, donc en hexa, ça en fait 2

Reply

Marsh Posté le 23-06-2004 à 16:25:45    

HelloWorld a écrit :

Citation :

je veux afficher le 1er int en hexadecimal a l'écran, ce qui en théorie devrait donner un truc du genre "cdcd" soit deux octets, mais le hic c'est que j'ai 4 octets ("cdcdcdcd" ) au lieu de deux.


Et pourquoi donc ?
La taille de int dépend de la plateforme. Chez toi c'est 32 bits = 4 octets. Utilise long/short.
Pourquoi passes-tu par le file descriptor ?


 
le file descriptor est nécessaire pour la fonction _read().
Taz merci mais tu pourrais y aller plus gentillement.

Reply

Marsh Posté le 23-06-2004 à 16:26:26    

Taz a écrit :

ben non, un int en décimal ça fait 4 octets, donc en hexa, ça en fait 2


???

Reply

Marsh Posté le 23-06-2004 à 16:29:43    

beusser a écrit :

le file descriptor est nécessaire pour la fonction _read().
Taz merci mais tu pourrais y aller plus gentillement.

je vois pas pourquoi j'y irais plus gentillement, je te dis d'utiliser ifstream::read et tu continues à parler de ton _read sorti d'on ne sait ou

Reply

Marsh Posté le 23-06-2004 à 16:30:11    

pour plus d'incompréhension

Reply

Marsh Posté le 23-06-2004 à 16:33:08    

Taz a écrit :

ben non, un int en décimal ça fait 4 octets, donc en hexa, ça en fait 2


int dec = 4026531840;
int hex = 0xF0000000;
Donc dec fait 4 octets et hex 2, c'est ça ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 23-06-2004 à 16:33:48    

c'est fou ce que vous êtes impressionables, lavettes :o :D

Reply

Marsh Posté le 23-06-2004 à 16:33:48   

Reply

Marsh Posté le 23-06-2004 à 16:34:49    

Reply

Marsh Posté le 23-06-2004 à 16:36:15    

Taz a écrit :

je vois pas pourquoi j'y irais plus gentillement, je te dis d'utiliser ifstream::read et tu continues à parler de ton _read sorti d'on ne sait ou


 
je répondais à "HelloWorld"...
personne t'as forcé a être désagréable...

Reply

Marsh Posté le 23-06-2004 à 16:37:16    

non, je vous fait ce plaisir renouvellé

Reply

Marsh Posté le 23-06-2004 à 21:27:18    

Taz a écrit :  :

ben non, un int en décimal ça fait 4 octets, donc en hexa, ça en fait 2  


 :lol:


Message édité par cricri_ le 23-06-2004 à 21:29:10
Reply

Marsh Posté le 23-06-2004 à 21:41:11    

Taz a écrit :

ben non, un int en décimal ça fait 4 octets, donc en hexa, ça en fait 2


 
fortune [:meganne]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 26-06-2004 à 13:31:06    

Reply

Marsh Posté le 26-06-2004 à 14:00:39    

désolé, c'était des bêtises à Taz dont je rigolai ... :whistle:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed