1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
#include <string>
#include <bitset> // pour pouvoir utiliser la classe ... bitset
#include <limits.h> // pour pouvoir disposer de la constante CHAR_BIT
#include <iostream> // pour pouvoir disposer de cout
#include <fstream> // pour pouvoir disposer de... ifstream
#include<cstdio>
using namespace std;
int main (void)
{
std::ifstream ifs3("G:\\Documents\\Pictures\\2010 TEST\\0004.jpg",std::ios::binary);
if (!ifs3.is_open())
cout << "Impossible d'ouvrir le fichier en lecture !" << endl;
else
{
// sauvegarder la position courante
long pos=ifs3.tellg();
cout<<pos<<endl;
// se placer en fin de fichier
ifs3.seekg(0,std::ios_base::end);
// récupérer la nouvelle position = la taille du fichier
long size=ifs3.tellg();
cout<<dec<<size<<endl;
// restaurer la position initiale du fichier
ifs3.seekg(pos,std::ios_base::beg);
char **tfs3;
tfs3=new char*[size];
char ctmpfs3;
int i=0;
int j=0;
int n=0;
int a=0;
for( i=0; i<((size+1)/4); ++i)
{
cout<<endl<<n<<" ";
tfs3[i]=new char[3];
for( j=0; j<4; ++j)
{
ifs3.read(&ctmpfs3,1);
tfs3[i][j]=ctmpfs3;
//cout<<tfs3[n][j];
// pour l'affichage binaire, nous passons par un bitset
std::bitset<CHAR_BIT> bsfs3(ctmpfs3);
// std::cout<<uppercase<<"binaire : "<<bs<< " ";//uppercase affiche en majuscule
// affichage du charactère
// std::cout<<" char <<"<<d<< "<< ";
// pour provoquer l'affichage sous forme hexadécimale
a=bsfs3.to_ulong();
std::cout<<" "<<std::hex<<a;//(int)d;
/* pour provoquer l'affichage sous la forme décimale */
//std::cout<<" decimal : "<<dec<<a<<std::endl<<endl<<endl;
}
n=n+4;
}
ifs3.close();
// si fichier JPEG Tous les fichiers JPEG commencent par la valeur hexadécimale '0xFFD8' signifie SOI (Start Of Image)
std::bitset<CHAR_BIT> bsfs3(tfs3[0][0]);
if (bsfs3==0xFF)
{
std::bitset<CHAR_BIT> bsfs3(tfs3[0][1]);
if(bsfs3==0xD8)
cout<<" Jpeg "<<endl;
}
//plus besoin du tableau
// D'abord on libère le contenu du tableau
for( i=0; i<(size/4); ++i)
{
delete[](tfs3[i]);
}
// Puis on libère le tableau
delete[] tfs3;
}
} |
Partager