Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : conversion hexa bin str [ Divers / Débutant(e) ] (jm30)

dimanche 16 mars 2008 à 16:04:42 | conversion hexa bin str

jm30

bonjour a tous,
voila mon pb : dans une appli je lis un fichier en binaire,
aprés conversion en hexadecimal, tout serait ok si les octets contenant un numéro de telephone ne soient inversés :
06 20 30 40 50 se retrouve en 60 02 03 04 05 ....
la fonction qui convertit le bin en hexa :

function Bin2HexExt(const input:string; const spaces, upcase: boolean): string;
var
   loop      : integer;
   hexresult : string;

   begin
     hexresult := '';

     for loop := 1 to Length(input) do
        begin
        hexresult := hexresult + IntToHex(Ord(input[loop]),2);

        if spaces then hexresult := hexresult + ' ';
        end;

     if upcase then result := AnsiUpperCase(hexresult)
               else result := AnsiLowerCase(hexresult);


end;
Celle qui convertit de l hexa en string :

function Hex2Str(const input:string; const spaces, upcase: boolean): string;
var
   loop      : integer;
   hexresult : string;
   strresult :string;
   begin
     hexresult := '';

     for loop := 1 to Length(input) do
        begin
        hexresult := hexresult + char(input[loop]) ;


        if spaces then hexresult := hexresult + ' ';
        end;

     if upcase then result := AnsiUpperCase(hexresult)
               else result := AnsiLowerCase(hexresult);


end;
cette derniere fonctionne  ok pour la partie alpha du fichier.
En 2 mots existe-t-il une routine pour inverser un octet ( de 09 vers 90 par exemple ) dans une chaine hexa ?
merci à l avance de vos réponses , j avoue que je coince !!!!!

jm30


lundi 17 mars 2008 à 09:17:21 | Re : conversion hexa bin str

Guillemouze

"06 20 30 40 50 se retrouve en 60 02 03 04 05 ...."

heu deja ca fera plutot 06 14 1E 28 32 vue que tu convertit en hexa !
pourquoi ne pas utiliser un simple inttostr?
ou alors, si tu veux garder sur 2 chiffres, un format('%.2d', [Ord(input[loop])]);

lundi 17 mars 2008 à 14:03:27 | Re : conversion hexa bin str

f0xi

Membre Club Administrateur CodeS-SourceS

attention a la terminologie :

bin to hex = 01101101 >  6D

hex to str = 6D > '6D'


deefsign.gif

lundi 17 mars 2008 à 19:23:09 | Re : conversion hexa bin str

jm30

merci de vos réponses,Guillemouze et f0xi :
mais j ai du mal expliqué mon pb : en effet la conversion avec Hextostr est correcte (exemples : $41 - > 'A', $45 -> 'E') mais c est le binaire du fichier
qui est à l origine du pb : 09 devient '90'...35 -> '53' etc...
le fichier en question est celui d'une carte SIM (repertoire téléphonique),
pour ceux qui connaissent c'est le EF_ADN précisément.
en fait je crains qu il ne s agisse d'octets codés en 7 bits, voire d autres codage (et non en 8 bits classiques)et là , je ne sais pas créer pour le moment de routine pour convertir
Si quequ un a une idée merci d avance !

samedi 22 mars 2008 à 13:40:34 | Re : conversion hexa bin str

jm30

voilà, j ai trouvé la solution :

function convhexa(const input:string; const spaces, upcase: boolean): string;
var
   loop      : integer;
   hexresult : string;

   begin
     hexresult := '';

     for loop := 1 to  length(input) do
      begin
        hexresult := hexresult + reversestring(IntToHex(Ord(input[loop]),2));// là on inverse les caractéres de l hexa..
          end;


        if spaces then hexresult := hexresult + ' ';// espace rajouté suivant paramétre donné à la fonction


     if upcase then result := AnsiUpperCase(hexresult) //majuscules ou minuscules suivant paramétre donné à la fonction
               else result := AnsiLowerCase(hexresult);

     end;
end;

j ai testé et cela fonctionne, merci des conseils à tous
cordialement,

lundi 24 mars 2008 à 14:53:45 | Re : conversion hexa bin str

jm30

bonjour, c est encore moi !
autre pb à vous soumettre : comment décoder des caactéres codés en 7 bits (au lieu des 8 classiques ) :
en effet je cherche, dans le cadre d'une petite appli destinée à lire des sms sur une carte sim, comment lire des caractéres codés en 7 bits (avec du pdu ).
je pense que la question est connue, il existe des sources en c++, vb.net mais en delphi j'ai rien trouvé pour m aider.
je penses qu 'il doit falloir utiliser shl ou shr dans une fonction qui lit bit à bit ?
merci de vos coups de main, qui m'eviteront l'abus d aspirine, hi !



Cette discussion est classé dans : input, string, hexa, loop, hexresult


Répondre à ce message

Sujets en rapport avec ce message

hexa vers string ? [ par Nero` ] bonsoir à tous .Je rencontre un petit problème de débutant .J'ai besoin de lire un octèt dans un fichier et ensuit de l'afficher dans une textbox ou a String vers Byte ??? [ par Nero` ] Bonjours à tous et à toutes.Quelqu'un pourais t'il me dire comment faire pour passer le contenue d'une variable type string dans une autre de type byt fonction opposée a FormatDateTime [ par Sat83 ] Bonjour, Je suis a la recherche d'une fonction qui fait l'inverse de la fonction FormatDateTime.Je m'explique: plutot que d'avoir en entrée un TDateTi Internal server error [ par TarikBelSOFT ] bonjoursJ'utilise Delphi 7 avec Indy pour afficher une page, j'essaye de m'identifie avec IdHttp.Cela aboutit a une erreur (internal server error).voi composant property [ par simonpelloquin ] Bonjour, Je dérive un TComboBox pour lui rajouter quelques propriétés (cf l'excellent tuto de DelphiProg à ce sujet) Dans private j'ai mis : FTName : vérifier le format d'un ShortString [ par zwyx ] Bonjour à tous,Je souhaite récupérer depuis un fichier *.ini le format qui va être appliqué pour afficher les flottants, grâce à la fonction FormatFlo ado connection string [ par Arsofts ] salut,je voulais creer une procedure pour connecter le delphi avec Access par ado en utilisant les procedureprocedure TForm1.DataBaseConnecting;var DB Tableau 2 dimensions [ par lusitano69 ] Bonjour je m'explique je voudrais avec un string que j ai récupéré(contient des coordonées de X,Y par exemple) remplir un tableau à 2 dimensions mais operation pointeur incorrect [ par deutsch ] Bjr Voila j'ai une dll ki a comme parametre d'entrer un integer et sortie une string quand je lui fait appel via un EXE le message "operation pointeur utilisation d'une function ExtarctValVar(ligne):string; [Delphi6] [ par Bouboukick ] Bonjour,j'aimerais avoir des reneignements au sujet de cette function et d'un petit exemple svp.Je cherche a utiliser celle afin de couper en 2 morcea


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.