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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
#include <stdlib.h>
#include <stdio.h>
#include <cv.h> // open cv general include file
#include <highgui.h> // open cv GUI include file
#include <fstream> // standard C++ I/O
/*
- la classe ofstream (output file stream) permet d'insérer (put) des données dans le fichier
associé à la variable ou, en d'autres termes, d'écrire dans le fichier ;
- la classe ifstream (input file stream) permet d'extraire (get) des données du fichier associé à
la variable ou, en d'autres termes, de lire le fichier ;
*/
using namespace cv; // OpenCV API is in the C++ "cv" namespace
using namespace std;
unsigned char getBitN(unsigned char testvalue, int bit)
{
unsigned char b;
b = 1 & (testvalue >> bit); // décalage à droite de "bit"
return b;
}
unsigned long hashe (unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
{
hash = ((hash << 5) + hash) + c; // hash * 33 + c
}
return hash;
}
string demandeLeChemin(void)
{
string chemin;
cout << "Enter the adress af your message file.\n";
cin >> chemin;
return chemin;
}
int main( int argc, char** argv )
{
int length;
char * buffer;
char tab_bit[50000];
ifstream message; // message object
if (argc == 1)
{
do
{
message.open(demandeLeChemin(), ios::binary);
}
while (!message);
// we get the length of the file
message.seekg(0, ios::end);
length = message.tellg();
message.seekg(0, ios::beg);
// We allocate memory for the file
buffer = new char [length];
unsigned char* tab_bit = new unsigned char[length*8];
// We write data in the memory
message.read (buffer,length);
// Utiliser les données ici
int n=0;
for (int i=0; i<length; i++)
{
char c = buffer[i];
cout << endl << "We are at the " << i << " st octet." << endl;
unsigned char mask = 128;
for (int j=0; j<8; j++)
{
if (c & mask)
{
cout << 1;
}
else
{
cout << 0;
}
mask >>= 1;
}
cout << "\n";
} // for
// Libérer la mémoire une fois le traitement terminé
delete[] buffer;
message.close();
//00000001b = 0x01 = 1
//00000010b = 0x02 = 2
//00000100b = 0x04 = 4
//00001000b = 0x08 = 8
//00010000b = 0x10 = 16
//00100000b = 0x20 = 32
//01000000b = 0x40 = 64
//10000000b = 0x80 = 128
return 0;
}
else
{
return -1;
}
} |
Partager