Lire et écrire en binaire

J’ai une alternative au cryptage des données lors de la sauvegarde dans un fichiers : pourquoi ne pas utiliser la fonction fwrite et fread de la bibliothèque standard en language C ? Ca prend moins de temps que de :

  1. Décrypter le fichier pour le lire
  2. Le re-crypter pour le protéger des modifications :frowning:
  3. Le re-décripter pour écrire dedans :confused:
    4 . Le re-crypter pour le protéger un fois de plus des modifications :angry:

+1 pour utilisation de fichier binaires

Euh, ça ne permet pas juste de lire ou écrire un fichier? (et donc, c’est pas ce que GD utilise déja?)
T’es marrant avec tes histoires de binaires XD
Dans un ordi tout est en binaire. (même un fichier texte a la con c’est un fichier binaire… :laughing: )
Perso, je trouve que crypter c’est assez chiant, je m’amuse plus avec ça… (ou bien je sauve en ligne, mais pas besoin de crypter…)

Par contre, lire et écrire des fichiers textes “normaux” (pas xml) ça serait bien :wink:
(Lire une ligne, déplacer le curseur, ou lire tout le fichier, écraser une ligne…c’est pratique :slight_smile: )

Il veut dire qu’il veut qu’on puisse écrire des fichiers contenant du binaire pur, pas un truc qui est converti en txt ou autre, du binaire. Et c’est un truc qui serait fort utile.

Bah, pourquoi pas, mais comment vérifier si ton fichier contient bien ce que tu veux après? :astonished:

Hé bien tu utilises des structures contenant les données à sauvegarder. Le développeur pourra ajouter (ou retirer mais on peut l’exclure) des variables à sa structure puis pourra choisir de la sauvegarder dans le fichier de son choix. Bien sûr, cette structure ne pourra pas contenir de pointeur, puisque l’adresse de la variable changera lors d’un nouveau lancement du programme. Par exemple, les données de sauvegarde seront ajoutées comme ça :

struct MaStuctureDeSauvegarde
{
     int maVariable1;
     int maVariable2;
     int autreVariable;
};

et dans la fonction sauvegarde :

File *fichier = fopen("monFichier.monExtension", "wb"); // b pour binaire
fwrite(&MaStructureDeSauvegarde, tailleEnOctets, nombreEléments, fichier); // Renvoie le nombre d'éléments écrits avec succés
fclose(fichier);

Bon après on peut aussi utiliser des tableaux dynamiques (vector par exemple) mais ça c’est pas moi qui décide :smiley:
En tout cas ça serait une bonne parade pour éviter le cryptage / décryptage. En revanche, la portabilité n’est pas assurée : sur mon ordinateur, un int prend 4 octets en mémoire. Je doute que sur le votre, il prenne forcément la même taille en mémoire. Pour plus d’infos, allez sur http://www.siteduzero.com/tutoriel-3-313530-lecture-et-ecriture-de-fichiers-en-mode-binaire.html.

Tiens par exemple, tu peux ajouter une fonctionnalité “instance de sauvegarde” qui permet d’ajouter ou de retirer certains éléments dans une liste de variables. J’ai dit tout ce que j’avais à dire à ce sujet. C’est comme tu le vois une possibilité intéressante.

:mrgreen:

Bin tien, et pourquoi pas faire le café aussi hien :unamused:

Non aller sans rire, je trouve cette idée géniale :mrgreen:

seulle soucis, je me rappel plus si je l’avais pas demander sa hein :unamused:

Vous savez ce que ça veut dire ? Tous les avantages :

  • Eviter le décryptage / cryptage / décryptage / cryptage
  • Sauvegarder en une seule fois toutes les données sélectionnées
  • Là ça sera du binaire informatique, incompréhensible pour les humains. L’éditeur de texte ne sais pas décrypter le binaire.

Seul inconvénient :

  • La portabilité.

C’est parfaitement portable, je ne vois pas ou est le problème. Un fichier ça reste un fichier.

Le problème, c’est la taille des types qui diffèrent selon les processeurs 32 et 64 bits.

En voilà un avec qui je me comprend.

Par exemple, il y a les unsigned long int qui mesurent 4 octets sur un PC 32 bits et 8 octets sur un PC 64 bits.

Tout à fait.

Rien ne t’oblige à mettre des nombres trop important, après c’est au dev de s’adapter, si il peut pas il reste avec le XML.
Puis bon, les entiers sont permettent quand même des nombres immensément grand, qui ne seront quasiment jamais utilisés dans les jeux (4 octets c’est juste énorme) donc il n’y a aucun problème.

Bon alors c’est oui pour le binaire ? :confused: