Supprimer plusieurs octets séparés d'un fichier binaire ?

Supprimer plusieurs octets séparés d'un fichier binaire ? - C++ - Programmation

Marsh Posté le 20-08-2007 à 03:44:35    

Salut tout le monde
 
Queluq'un connaît quel code à utiliser pour supprimer des octets séparés par blocs  
(de 1024 octes chacun) d'un fichier binaire? Pour plus de précision:
 
Le nombre d'octets à supprimer en premier lieu est au début du fichier (Header): 18 octets.
Puis 5 ocetcs à supprimer toujours après chaque bloc, sauf après le dernier (1344 ième) seulement 4 octets à supprimer.
 
Merci d'avance de vos réponses.


Message édité par Brahimovitch le 20-08-2007 à 03:45:40
Reply

Marsh Posté le 20-08-2007 à 03:44:35   

Reply

Marsh Posté le 20-08-2007 à 03:48:30    

Re
 
 
J'allais oublier ...
 
C'est sous windows avec Visual Studio 2005 Standard (anglais)
 
Merci encore "d'avance"


Message édité par Brahimovitch le 20-08-2007 à 03:48:59
Reply

Marsh Posté le 20-08-2007 à 09:37:51    

Il faut réécrire le fichier intégralement, sans les blocs à supprimer.

Reply

Marsh Posté le 20-08-2007 à 11:15:53    

c'est cool le gras et le orange

Reply

Marsh Posté le 20-08-2007 à 15:58:20    

Elmoricq a écrit :

Il faut réécrire le fichier intégralement, sans les blocs à supprimer.


 
Salut
 
Pour le réécrire sans les octets à supprimer il faut d'abord le lire n'est-ce pas?  
Cette méthode de lecture sera lente à mon avis, donc ce que je voulais c'est
de supprimer le nombre de bytes cités dans mon premier message directement
sans avoir besoin de  lire le fichier, les datas à supprimer ne sont pas prédéfinis.
Le programme ou le code à exécuter n'aura pas des définitions liées aux
types de datas mais plutôt il fera le calcul sans donner d'importance aux datas:
Il doit supprimer 18 bytes au début puis caluler 1024 octets à laisser, ensuite supprimer
5 octets puis cacluler la même taille de bloc (1024 octecs) puis supprimer 5 autres
octets et ainsi de suite jusqu'au dernier bloc (1344 ième) ou il ne doit supprimer
que 4 octets qui restent à la fin du fichier.
 
En fait les 5 octets dont je parle sont des checksums 16 bits suivis chacun de la valeur 04
(04 désigne la taille en hex du bloc suivant => 400h= 1024 octets), voilà un exemple:
1 ier  bloc de 1024 octets suivi de 0000 1B5C 04
2ème bloc de 1024 octets suivi de 0001 5A3D 04
3ème bloc de 1024 octets suivi de 0002 6FDC 04
et ainsi de suite ...
Le dernier == 1024 octets suivi de 053F E7FE
 
Si vous le constatez les checksums sont devancés d'une suite d'index
0000, 0001, 0002 .... 053F (1343) donc le total des blocs est 1344
 
à ajouter aussi que la taille originale est 1 382 993 octets
il doit être après la suppression  ====> 1 376 256 octets.

Reply

Marsh Posté le 20-08-2007 à 16:03:12    

Tu n'as pas le choix, tu ne peux pas supprimer des blocs dans un fichier sans le réécrire intégralement.
Et oui, il faut le lire avant.

Message cité 1 fois
Message édité par Elmoricq le 20-08-2007 à 16:03:52
Reply

Marsh Posté le 20-08-2007 à 16:12:27    

Elmoricq a écrit :

Tu n'as pas le choix, tu ne peux pas supprimer des blocs dans un fichier sans le réécrire intégralement.
Et oui, il faut le lire avant.


 
Re
 
Et comment ça sera cette lecture en négligeant les datas à supprimer?
En memoire ou en créant un fichier temporaire ou autre? Excusez-moi
mais je suis un nul qui débute en C++ même si j'ai déjà des bases en ce  
qui concerne l'édition hexadécimale, je trouve que c'est difficile, mais bon,
avec la volonté et la patience ça viendra :)  
 
Merci d'avance.

Reply

Marsh Posté le 20-08-2007 à 16:13:46    

tu mmap et du décales.

Reply

Marsh Posté le 21-08-2007 à 02:08:27    

Taz a écrit :

tu mmap et du décales.


 
Désolé mais je suis toujours bloqué, comme j'ai dit dans mon message précédent
je suis débutant et je voudrais savoir tout dès le début:
 
Quelles directives devrais-je inclure ?
 
#include <??>
#include <??>
#include <??>
 
Et quelles fonctions devrais-je utiliser pour ouvrir le fichier de la manière que vous avez  
expliquée brièvement ?!
 
Excusez-moi,  je ne demande pas avoir tout le code mais ce que je veux c'est de
me pousser à trouver le bout du fil car je suis toujours coincé !!!  
 
Merci d'avance

Message cité 1 fois
Message édité par Brahimovitch le 21-08-2007 à 02:12:58
Reply

Marsh Posté le 21-08-2007 à 04:21:03    

Taz a écrit :

tu mmap et du décales.

 

Ca existe mmap en win32?

 

J'ai toujours vu des MapViewOfFile mais jamais de mmap :??:

 
Brahimovitch a écrit :


Excusez-moi,  je ne demande pas avoir tout le code mais ce que je veux c'est de
me pousser à trouver le bout du fil car je suis toujours coincé !!!

 

http://msdn2.microsoft.com/en-us/library/aa366761.aspx

 

M'enfin je vois pas l'intérêt du mmap, des read/fread feraient pareil. Pour faire du mmap, ca va compliquer la chose, s'il veut travailler sur l'intégralité du fichier il devra utiliser fstat avant... Si c'est un débutant, il va se vautrer dans les pointeurs à coup sur.

Message cité 1 fois
Message édité par Gf4x3443 le 21-08-2007 à 04:21:11
Reply

Marsh Posté le 21-08-2007 à 04:21:03   

Reply

Marsh Posté le 21-08-2007 à 11:54:43    

Gf4x3443 a écrit :


 
Ca existe mmap en win32?
 
J'ai toujours vu des MapViewOfFile mais jamais de mmap :??:
 


 

Gf4x3443 a écrit :


 
http://msdn2.microsoft.com/en-us/library/aa366761.aspx
 
M'enfin je vois pas l'intérêt du mmap, des read/fread feraient pareil. Pour faire du mmap, ca va compliquer la chose, s'il veut travailler sur l'intégralité du fichier il devra utiliser fstat avant... Si c'est un débutant, il va se vautrer dans les pointeurs à coup sur.


qu'est-ce que jen sais si ça existe ... mmap ça va tout simplifier. Si tu sais faire l'opéation dans un char[], alors tu sais la faire. Ca va être plus chiant et moi efficace.

Reply

Marsh Posté le 22-08-2007 à 14:34:10    

Citation :

http://msdn2.microsoft.com/en-us/library/aa366761.aspx  
 
M'enfin je vois pas l'intérêt du mmap, des read/fread feraient pareil. Pour faire du mmap, ca va compliquer la chose, s'il veut travailler sur l'intégralité du fichier il devra utiliser fstat avant... Si c'est un débutant, il va se vautrer dans les pointeurs à coup sur.


 
Salut
 
Interessant merci beaucoup.

 
 

Citation :

Quelles directives devrais-je inclure ?  
 
#include <??>  
#include <??>  
#include <??>


 
Un petit eclaircissement sur les includes à utiliser sera le bienvenu, merci à tous.

Message cité 1 fois
Message édité par Brahimovitch le 22-08-2007 à 14:34:46
Reply

Marsh Posté le 22-08-2007 à 15:01:45    

Reply

Marsh Posté le 22-08-2007 à 15:19:41    

[:jerem38]  


Message édité par MagicBuzz le 22-08-2007 à 15:19:54
Reply

Marsh Posté le 22-08-2007 à 16:41:27    

Brahimovitch a écrit :


Un petit eclaircissement sur les includes à utiliser sera le bienvenu, merci à tous.


 
Manifestement, Le lien que je donne, ca doit être du poulet.  :heink:  

Header
 
Declared in Winbase.h; include Windows.h.

 
Faudrait peut être commencer par la tu crois pas?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed