OVH Cloud OVH Cloud

lecture fichier byte par byte

16 réponses
Avatar
paolo_3
bonjou rj'utilise codeblook ....pour programmer...je suis debutant...

j'ai trouver ce code sur internet ,ok il marche mai sj'aimerai pas
qu il charge en char mais en dec .
j'aimerai lire le fichier et le coder si en veu , exemple charge la
valeur 10 et par exemple j'ajoute +1 et sauve 11...je fais une
manipulation du dec et le sauve coder si en veu ..

#include <fstream>
int main()
{
using std::ifstream;
using std::ofstream;
ifstream ifs("c:\\out2.txt", std::ios::binary);
ofstream ofs("c:\\sortie.txt", std::ios::binary);
//
// on lit et on =E9crit un octet =E0 la fois, mais c'est tr=E8s rapide
car les flux standard
// en entr=E9e et en sortie proc=E8dent =E0 des acc=E8s optimis=E9s au m=
=E9dia
sous-jacent (acc=E8s
// en bloc et une ant=E9m=E9moire pour les donn=E9es disponibles).
//

char c;



while (ifs.get(c))
printf("resultat =3D %c\n",c);
ofs.put(c);
}


merci

6 réponses

1 2
Avatar
Pascal J. Bourguignon
paolo_3 writes:

je prend un fichier quelconque si en le lit avec un editeur hexa en
as :

31372f31302f32303038202d206d495

j'aimerai qu'il prenne le 31 et me fasse l'inverse de la valuer lue
ce qui donnerais :

cfc9d1 etc....



L'inverse de 0x31 n'est pas 0xcf, mais 0xce.
Le complément à deux de 0x31 est 0xcf.

(de même, l'inverse de 0x37 est 0xc8, pas 0xc9, et l'ionverse de 0x2f
n'est pas 0xd1, mais 0xd0).

En C++, l'opérateur pour inverser les bits est: ~

unsigned char c=0x31;
unsigned char inverse=~c;

--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
Olivier Miakinen
Le 10/09/2011 22:52, je répondais à polo_3 :

if (c=="31") {c="cf";}



if (c == 0x31) { c = 0xcf; }




Bon, c'est un peu plus grave que ce que je n'ai vu en lisant
rapidement.

Tu as écrit :

if (c=="31") {c="cf";}
while (ifs.get(c))
ofs.put(c);



C'est :

while (ifs.get(c)) {
if (c == 0x31) { c = 0xcf; }
ofs.put(c);
}

Plus exactement, pour ta demande de valeur opposée, tu peux faire :

while (ifs.get(c)) {
c = 256 - c;
ofs.put(c);
}

Voire tout simplement :

while (ifs.get(c)) {
c = -c;
ofs.put(c);
}
Avatar
paolo_3
On Sep 10, 10:56 pm, Olivier Miakinen <om+ wrote:
Le 10/09/2011 22:52, je répondais à polo_3 :



>>    if (c=="31") {c="cf";}

> if (c == 0x31) { c = 0xcf; }

Bon, c'est un peu plus grave que ce que je n'ai vu en lisant
rapidement.

Tu as écrit :

>    if (c=="31") {c="cf";}
>    while (ifs.get(c))
>       ofs.put(c);

C'est :

   while (ifs.get(c)) {
      if (c == 0x31) { c = 0xcf; }
      ofs.put(c);
   }

Plus exactement, pour ta demande de valeur opposée, tu peux faire :

   while (ifs.get(c)) {
      c = 256 - c;
      ofs.put(c);
   }

Voire tout simplement :

   while (ifs.get(c)) {
      c = -c;
      ofs.put(c);
   }



ok merci je vais essayer merci !
Avatar
Pascal J. Bourguignon
paolo_3 writes:

      c = -c;



ok merci je vais essayer merci !



Note que -c ne donne pas l'inverse, ni forcément le complément à deux,
mais simplement l'opposé de c. Le motif de bit obtenu dépend
entièrement de l'implémentation.

Ceci dit, comme tu n'as pas l'air de savoir ce que tu veux, ça n'a
probablement aucune importance.

--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
Avatar
paolo_3
On Sep 12, 8:07 pm, "Pascal J. Bourguignon"
wrote:
paolo_3 writes:
>> c = -c;

> ok merci je vais essayer merci !

Note que -c ne donne pas l'inverse, ni forc ment le compl ment deux,
mais simplement l'oppos de c.  Le motif de bit obtenu d pend
enti rement de l'impl mentation.

Ceci dit, comme tu n'as pas l'air de savoir ce que tu veux, a n'a
probablement aucune importance.

--
__Pascal Bourguignon__                    http://www. informatimago.com/
A bad day in () is better than a good day in {}.



j'ai un probbleme la il ne me cree plus le fichier avant ca
functionner , jai fais clean , rebuild workspace rien a faire ,meme
le programme qui functionner ne cree plus le fichier ?
pourquoi je ne comprend pas
Avatar
paolo_3
On Sep 12, 8:35 pm, paolo_3 wrote:
On Sep 12, 8:07 pm, "Pascal J. Bourguignon"
wrote:

> paolo_3 writes:
> >> c = -c;

> > ok merci je vais essayer merci !

> Note que -c ne donne pas l'inverse, ni forc ment le compl ment deux,
> mais simplement l'oppos de c.  Le motif de bit obtenu d pend
> enti rement de l'impl mentation.

> Ceci dit, comme tu n'as pas l'air de savoir ce que tu veux, a n'a
> probablement aucune importance.

> --
> __Pascal Bourguignon__                    http://ww w.informatimago.com/
> A bad day in () is better than a good day in {}.

j'ai un probbleme la il ne me cree plus le fichier avant ca
functionner , jai fais clean , rebuild workspace  rien a faire ,meme
le programme qui functionner ne cree plus le fichier ?
pourquoi je ne comprend pas



ok ca marche juste que je veu pas sauver ca dans le fichier comme du
txt .mais comme fichier
merci
1 2