IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

convertir un fichier .bin (ascii) en hexa


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut convertir un fichier .bin (ascii) en hexa
    bonjour tlm
    mon problem et le suivant ,
    je dans mon travail un fichier .bin de 16ko c que je veux faire au juste c de convertir par 16 byte le fichier .bin dans un streem en hexadecimal qva me donne 32 carecter en acsii
    un exemple de debut de fichier .bin
    .. ..'...............................~.>.'P........O....T..........)......K.........p.....O.........B..y.Q.........O..cE............n...c..........g............


    la ca donne en hexa le suivant

    BAB02006082700000000000000000000
    11111111111111111111111111111111
    0110008F157EDC3E0127500000000000
    0110024F99EBD5ED54F2180000000000
    01100429DDE782F199EE4B0000000000
    011006B170A2CB7F1B084F0000000000
    011008BC42FDBD799D51E70000000000
    01100A4FB5096345D6C78D0000000000
    01100CBF6ECB1C8C6309F40000000000
    01100E670E0486A8EED0A50000000000

    mon bute enfin de faire e modifucation dans le streem ki es en hexa et apre le changement je re convertie a nouveaux en ascii càd .bin ki reste tj avec meme taille 16ko

    merci a vous de me donne tite idee comme le lire avec un block de 16 caracter de fichier .bin (ascii) et le convertir en hexa decimal

    j'attend c tres urgent merci a vs une autre fois et dsl pour mes faute en français car c ma 2em langue.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour une deuxieme langue tu maitrises bien le SMS ...

    J'ai un programme que j'avasi à un ami, qui convertissait un fichier en Hex à l'écran, je chercherai les sources mais pas avant midi car il est chez moi.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Malatar
    Pour une deuxieme langue tu maitrises bien le SMS ...

    J'ai un programme que j'avasi à un ami, qui convertissait un fichier en Hex à l'écran, je chercherai les sources mais pas avant midi car il est chez moi.

    merci Malatar pour votre reponse

    je vous attend ...

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par LionNar
    merci Malatar pour votre reponse

    je vous attend ...
    Désoler j'ai complètement zapper ca à midi, j'espère pas oublier ce soir en rentrant après les courses ^^

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Malatar
    Désoler j'ai complètement zapper ca à midi, j'espère pas oublier ce soir en rentrant après les courses ^^

    auqun problem Malatar j'attend a c soire alors

    bon fin journee a vs et a tlm

    merci

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function StrToHexStr(source: String): String;
    Var
      i: Cardinal;
      x: Integer;
      achar: ShortString;
    Begin
      Result := '';
      If (source = '') Then Exit;
      SetLength(Result, Length(source) * 2);
      x := 2;
      For i := 1 To Length(source) Do Begin
        achar := Format('%.2x', [Integer(source[i])]); 
        Result[x - 1] := achar[1];
        Result[x] := achar[2];
        Inc(x, 2);
      End;
    End;
    ???

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Sub0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function StrToHexStr(source: String): String;
    Var
      i: Cardinal;
      x: Integer;
      achar: ShortString;
    Begin
      Result := '';
      If (source = '') Then Exit;
      SetLength(Result, Length(source) * 2);
      x := 2;
      For i := 1 To Length(source) Do Begin
        achar := Format('%.2x', [Integer(source[i])]); 
        Result[x - 1] := achar[1];
        Result[x] := achar[2];
        Inc(x, 2);
      End;
    End;
    ???
    Merci Sub0

    je quelque fonction aussi comme strtohex ou le contrere hextostr mais je un problem de lire de fichier , voila c que je veux eacctement

    je commace a lire le fichier avec un variabl comme "source" dans ton exemple
    mais malgre que je fixer le string a 16 je trouve 148 carcter au variabl qui es ne valable dans mon cas car je veux lire de source fichier .bin 16carecter par 16fix a 16carecter comme ca j'obtien le 32 hexa comme 1ere line dion dans un memo comme exemple et apre meme choe jusque fin de fichier .bin pour trouver une resultat dison dans un memo chaque ligne contien 32 carecter hexa

    voilà en gros j'espre que mon idee et clre mtn ( le problemecqavec le variable je le trouve pas 16carecter quand je lu de fichier)

    merci a vs
    et j'attend encore le source de Malatar

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il faut scinder la chaîne. Tu obtiens donc une liste de chaîne (TStrings) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Procedure MyWordWrap(Const s: String; cnt: Integer; list: TStrings);
    Var x, l: Integer;
        st: String;
    Begin
      l := Length(s);
      If (l <= 0) Then Exit;
      x := 1;
      st := '';
      Repeat
        If (x Mod (cnt + 1) = 0) Then Begin
          list.Add(st);
          st := '';
        End Else st := st + s[x];
        x := x + 1;
      Until (x > l);
      If (st <> '') Then list.Add(st);
    End;
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Memo1.Clear;
    MyWordWrap(TaChaine, 32, Memo1.Lines);
    Autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Var list: TStringList;
        x: Integer;
    Begin
      list := TStringList.Create;
      MyWordWrap(TaChaine, 32, list);
      If (list.Count > 0) Then
        For x := 0 To list.Count - 1 Do
          Memo1.Lines.Add(list[x]);
      list.Free;
    End;

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il existe la fonction WrapText() de l'unité SysUtils qui fait la même chose.

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Sub0
    Il existe la fonction WrapText() de l'unité SysUtils qui fait la même chose.

    Merci Sub0

    je vais essyer tt ca et je te me au courant s tt va bien ou pas encore
    une autre fois merci a vs

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Oula passer après sub ca va être dur avec mon petit prog fait a la va vite y a très longtemps

    Voila le source d'un petit prog que j'ai fait pour quelqu'un qui voulait l'affichage en exa de petit fichier (j'ai bien dit petit fichier )
    Fichiers attachés Fichiers attachés

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Malatar
    Oula passer après sub ca va être dur avec mon petit prog fait a la va vite y a très longtemps

    Voila le source d'un petit prog que j'ai fait pour quelqu'un qui voulait l'affichage en exa de petit fichier (j'ai bien dit petit fichier )
    mille merci Malatar c vraiment c que je cherche vraiment

    problem resolu

    thx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertir des caractère Ascii en hexa
    Par xtimas dans le forum MATLAB
    Réponses: 3
    Dernier message: 23/04/2010, 14h07
  2. convertir un fichier hexa en texte
    Par gedeon555 dans le forum VBScript
    Réponses: 0
    Dernier message: 17/08/2008, 10h44
  3. convertir un fichier binaire en ascii
    Par M_JOU79 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 12/06/2007, 00h48
  4. [exe] convertire un fichier java en executable?
    Par Toosek dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/01/2004, 11h49
  5. [] Convertir un fichier word en pdf
    Par SpaceFrog dans le forum VBA Word
    Réponses: 7
    Dernier message: 06/12/2002, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo