Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 240

 
Ciao a tutti. Non riesco a capire come convertire una stringa (diciamo "ciao a tutti") in numero doppio e viceversa da doppio a stringa ? Forse qualcuno ha del codice già pronto?
 

Era una cosa semplice da fare:

StringToDouble()
DoubleToString()
            
 
Aleksei Stepanenko:

E il puzzle era facile da risolvere:

Il problema è che non è un numero inserito come testo (ad esempio "345.45") che devo convertire in Double, ma qualsiasi testo non legato al numero stesso. Quando si applica ad esempio

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

È lo stesso al contrario. Naturalmente potete fare un ciclo su ogni carattere della stringa usando

StringGetChar();

e mettere i loro codici in Double, ma come decifrare/ricevere la stringa da Double?


Quindi ci sono altre opzioni?

 
Yan Barmin:

Il problema è che non è un numero inserito come testo (ad esempio "345.45") che devo convertire in Double, ma qualsiasi testo non legato al numero stesso. Quando si applica ad esempio

È lo stesso al contrario. Qualche altra variante?

StringToCharArray

 
Yan Barmin:

Quindi ci sono altre opzioni?

Non capisco il senso di questa conversione, volete ottenere una somma di hash? Ci saranno problemi con la decrittazione inversa. Se la conversione diminuisce la quantità di informazioni, allora le state perdendo irrimediabilmente.

Che numero vuoi vedere qui:

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

Non capisco il senso di questa conversione, volete una somma di hash? Ci sarà un problema con la decrittazione inversa. Se la conversione diminuisce la quantità di informazioni, allora le state perdendo irrimediabilmente.

Che numero vuoi vedere qui?

Probabilmente questo:

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

}
 

Questo è divertente ;)

Potete corrispondere così sul forum. Storia, politica, tutte le cose difficili, e nessuno ti manderà al bando. Due, tre, uno...

 
19423224222423523223344322342242342242553224523824023824822425532232228229255322272382262382402322422523224623224424022423623233
 
Ora dovrete scrivere un decodificatore per leggerlo.
 
Aleksei Stepanenko:
Beh, dovrete scrivere un decodificatore per leggerlo ora.

Beh, se è una stringa, allora avete bisogno di codice extra, ma un array direttamente

   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));
Motivazione: