Questions des débutants MQL4 MT4 MetaTrader 4 - page 240

 
Bonjour à tous. Je n'arrive pas à comprendre comment convertir une chaîne de caractères (disons "hello all") en nombre double et vice versa de double en chaîne de caractères ? Peut-être que quelqu'un a un code prêt à l'emploi ?
 

C'était une chose simple à faire :

StringToDouble()
DoubleToString()
            
 
Aleksei Stepanenko:

Et le puzzle était facile à résoudre :

Le problème est que ce n'est pas un nombre saisi sous forme de texte (par exemple "345,45") que je dois convertir en double, mais tout texte non lié au nombre lui-même. En appliquant par exemple

StringToDouble("Исходный_текст") на выходе будут нули.

C'est la même chose en sens inverse. Vous pouvez bien sûr passer en boucle chaque caractère de la chaîne en utilisant

StringGetChar() ;

et mettre leurs codes dans Double, mais comment décrypter/recevoir la chaîne de caractères de Double ?


Y a-t-il d'autres options ?

 
Yan Barmin:

Le problème est que ce n'est pas un nombre saisi sous forme de texte (par exemple "345,45") que je dois convertir en double, mais tout texte non lié au nombre lui-même. En appliquant par exemple

C'est la même chose en sens inverse. D'autres variantes ?

StringToCharArray

 
Yan Barmin:

Alors, y a-t-il d'autres options ?

Je ne comprends pas l'intérêt de cette conversion, voulez-vous obtenir une somme de hachage ? Il y aura des problèmes avec le décryptage inverse. Si la conversion diminue la quantité d'informations, alors vous les perdez irrémédiablement.

Quel chiffre voulez-vous voir ici :

StringToDouble("Исходный_текст")
 
Aleksei Stepanenko:

Je ne comprends pas l'intérêt de cette conversion, voulez-vous une somme de hachage ? Il y aura un problème avec le décryptage inverse. Si la conversion diminue la quantité d'informations, alors vous les perdez irrémédiablement.

Quel chiffre voulez-vous voir ici ?

Probablement celui-là :

void OnStart()
{
   uchar scr[];
   string InputText="Исходный_текст";
   string Res="";
   StringToCharArray(InputText,scr,0,StringLen(InputText));
    for(int i=0; i<ArraySize(scr); i++)
      Res+=scr[i];
    Print(Res); // 20024124523822823725123395242229234241242

}
 

C'est drôle ;)

Vous pouvez correspondre comme ça sur le forum. L'histoire, la politique, tous les sujets difficiles, et personne ne vous enverra au ban. Deux, trois, un...

 
19423224222423523223344322342242342242553224523824023824822425532232228229255322272382262382402322422523224623224424022423623233
 
Maintenant, il faut écrire un décodeur pour le lire.
 
Aleksei Stepanenko:
Eh bien, vous devrez écrire un décodeur pour le lire maintenant.

Eh bien, si c'est une chaîne de caractères, alors vous avez besoin de code supplémentaire, mais un tableau directement

   uchar scr[];
   string InputText="Исходный_текст";
   string Res="";
   StringToCharArray(InputText,scr,0,StringLen(InputText));
    for(int i=0; i<ArraySize(scr); i++)
      Res+=scr[i];
  //  Print(Res);
  Print(CharArrayToString(scr));
Raison: