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

lire octet par octet

saleGauss
saleGauss
Niveau 9
21 juillet 2007 à 22:58:07

Bonjour,

Voila, etant donné un fichier .bmp, je voudrais le lire en binaire et le stocker dans un tableau par exemple.
Je pense utiliser les fstreams d´après ce que j´ai pu trouver sur le net.

voila mon code:
int main()
{

int* a;

unsigned char c; // caractère
int hex; // code hexa de ce caractère
long int n=1; // pour la taille du tableau
ifstream fichier("source150_.bmp", ios::in|ios::binary); // BINARY IMPORTANT !
if (!fichier)
{
cerr << "Erreur lors de l´ouverture du fichier " << endl;
return(1);
}
for(;;)
{
c = fichier.get();
a[n] = c;
if (fichier.eof()) break;
n++;
}

return(0);
}

Le seul pb c´est que ca me declanche une exception et je ne pige pas pourquoi.
C´est quand j´ajoute "c" dans mon tableau "a" que ca foire.

Est-ce que je suis sur la bonen voie pour lire un fichier en octet par octet et non en interprété comme des caractères ASCII.

Par exemple, je peux ouvrir mon ".bmp" avec l´editeur hexa de mon compilo (vc++).
Et je vois un truc du genre "AE 82 35 4E" et c´est exactement ce que je voudrais obtenir.
Dans mon cas j´aurais donc des groupes de deux chiffres hexa, qui repréentent un octet.

Pouvez vous me filer un coup de main sur le comment proceder?
En fait je voudrais clairement qu´on m´explique comment lire en octet par octet ou en bit par bit un fichier.

Merci bcp. ++

guyver2
guyver2
Niveau 10
21 juillet 2007 à 23:08:14

1) tu n´initialise pas ton tableau a: ça va planter...
2) a est un tableau de int (donc 4 octets sur tout compilateur qui se respecte) passe a un tableau de char.
3) je ne connais pas trop la gestion des fichiers en C++ mais n´y a t´il pas une fonction ficier.read(...) qui prndrait en parametre un pointeur sur la zone memoire a remplir et un nombre d´octet a lire au maximum (comme en C) ?

saleGauss
saleGauss
Niveau 9
21 juillet 2007 à 23:24:18

Les deux premiers pb ont été réglés (c´est la fatigue..)
Mais pour le 3eme, honetement si tu me donne du code C je suis preneur ;- )

guyver2
guyver2
Niveau 10
21 juillet 2007 à 23:36:35

attention, il faut addapter un poil le code. Je l´ai fait pour la psp il faut donc virer quelques include...

Il faut aussi faire attention a une chose: le "pitch"
ce sont des octets de bourrage pour que le nombre d´octets par ligne de l´image soit un multiple de 4.
par exemple pour une image de 3 pixels de large:
3 pixels codé sur 3 octets chacun ça fait 9 octest pour une ligne, il y a donc 3 pixels de bourrage qui sont rajouté.

Dans mon cas, je ne charge (et sauve) que des images de 480*272 je ne me suis donc pas préocuper du pitch

le fichier .c
http://rafb.net/p/oAaX5a73.html

le .h
http://rafb.net/p/5jSOBF32.html

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