Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1429 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  mode binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mode binaire

n°1360369
coline
Posté le 05-05-2006 à 13:19:35  profilanswer
 

Bonjour,
 
je souhaite travailler un fichier en mode binaire.
 

Code :
  1. var
  2.   MonStream : TMemoryStream;
  3. begin
  4.   MonStream := TMemoryStream.Create;
  5. try
  6.     MonStream.LoadFromFile(FileName);


 
Lorsqu'on ouvre un fichier ( dans cet exemple un fichier texte) qui contient comme texte par exemple "abc", qu'y a t-il à ce moment dans la mémoire ? 61 62 63, ou  01100001 01100010 01100011 ?
Merci
 

mood
Publicité
Posté le 05-05-2006 à 13:19:35  profilanswer
 

n°1360577
el zozo
Stroumf Grognon
Posté le 05-05-2006 à 16:38:40  profilanswer
 

coline a écrit :

Lorsqu'on ouvre un fichier ( dans cet exemple un fichier texte) qui contient comme texte par exemple "abc", qu'y a t-il à ce moment dans la mémoire ? 61 62 63, ou  01100001 01100010 01100011 ?
Merci

Ben... Les deux  [:airforceone] (sauf que c'est plutot 97,98,99(mais ça depend du codage. Ton texte peut etre en unicode)). Si tu le lit comme un fichier de byte plutot que comme un fichier de caractère, tu aura acces à la valeur numérique de tes octects.  
Apres, un nombre reste un nombre(je dirait mème:un octect reste un octect). Faut pas confondre valeur et représentation (qui est evidemment en binaire en memoire).
 
Ou peut etre que j'ai pas compris la question  [:airforceone]

Message cité 1 fois
Message édité par el zozo le 05-05-2006 à 16:43:30
n°1360613
coline
Posté le 05-05-2006 à 17:38:00  profilanswer
 

el zozo a écrit :

Ben... Les deux  [:airforceone] (sauf que c'est plutot 97,98,99(mais ça depend du codage. Ton texte peut etre en unicode)). Si tu le lit comme un fichier de byte plutot que comme un fichier de caractère, tu aura acces à la valeur numérique de tes octects.  
 
Ou peut etre que j'ai pas compris la question  [:airforceone]


 
Salut El Zozo,
 
si tu lis le fichier comme un fichier de byte ou de caractère, cela revient au même il me semble. Si on se déplace dans le stream, il se déplace de byte en byte. Je ne suis pas sur de ce que j'avance, je vais essayer de voir quelque chose.
 
Merci

n°1360615
el zozo
Stroumf Grognon
Posté le 05-05-2006 à 17:41:25  profilanswer
 

coline a écrit :

si tu lis le fichier comme un fichier de byte ou de caractère, cela revient au même il me semble.

Pas sûr. Si le fichier est encodé en UNICODE, je ne sais pas comment ça va réagir(perso, j'utilise les type "file" ou "textFile" plutot que les Stream).
Toujours est-il que je ne comprend pas tres bien ta question. Si tu sais comment accéder à la valeur numérique de chaque octect, que veut-tu savoir exactement?


Message édité par el zozo le 05-05-2006 à 17:42:46
n°1360632
coline
Posté le 05-05-2006 à 18:17:44  profilanswer
 

En fait, c'est pour faire un programme expérimental qui affiche un texte en hexa, puis en binaire, et j'ai une fonction qui affiche du binaire en hexa BinToHex. Alors si le contenu dans la mémoire est sous forme binaire, je gagnerais du temps.
 
Merci
 
@+

n°1360643
el zozo
Stroumf Grognon
Posté le 05-05-2006 à 18:32:25  profilanswer
 

Le contenu de la memoire est binaire. Mais  
1)Afficher 00110010 à l'ecran n'est pas plus rapide pour autant puis que tu affiche une chaine de 8 caracteres(donc 64 bits) n'ayant pas grand chose à voir avec les 8 bits d'origine.
2)Le processeur ne gere pas des bits, mais des octects et je ne connait pas de commande Delphi(ou mème assembleur) permetant de connaitre directement le nieme bit d'un octect(ou d'un mot, en général. Si quelqu'un à une fonction rapide, ça m'interesse).
 
Si tu veut transcrire un octect(ou plus généralement d'un nombre) de manière académique, la solution serait:
 

function ChaineBinaire(nombre:integer):string;
begin
  if nombre = 0 then ChaineBinaire := ''
  else
    if nombre mod 2 = 0 then ChaineBinaire := ChaineBinaire(Nombre div 2)+'0'
    else ChaineBinaire := ChaineBinaire(Nombre div 2)+'1';
end;


Message édité par el zozo le 05-05-2006 à 18:38:03
n°1360690
coline
Posté le 05-05-2006 à 21:10:26  profilanswer
 

Merci pour la précision.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  mode binaire

 

Sujets relatifs
[C / Unix] Recuperer un evenement clavier en mode consoleEcrire en binaire dans un fichier...
upload de fichier mais : SAFE MODE Restriction in effect.Safe Mode - Creation de dossier
Lecture d'un fichier binaire (fichier C3D)Migration de binaire local dans table Mysql LONGBLOB
Comment lire un fichier en mode binaire octet par octet ?Lecture d'un fichier en mode binaire
Petite question à propos de l'accès en mode binaire des fichiers...ecriture reecriture fichier en mode binaire
Plus de sujets relatifs à : mode binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR