Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 240

 
Hola a todos. No consigo averiguar cómo convertir una cadena (digamos "hola a todos") en un número doble y viceversa, de doble a cadena. ¿Quizás alguien tenga algún código ya hecho?
 

Era algo sencillo de hacer:

StringToDouble()
DoubleToString()
            
 
Aleksei Stepanenko:

El problema es que no es un número que tenga que traducir como texto (por ejemplo, "345,45"):

El problema es que no es un número introducido como texto (por ejemplo, "345,45") lo que necesito convertir en Doble, sino cualquier texto no relacionado con el número en sí. Cuando se aplica, por ejemplo

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

Lo mismo ocurre a la inversa. Por supuesto, se puede hacer un bucle por cada carácter de la cadena utilizando

StringGetChar();

y poner sus códigos en Double, pero ¿cómo descifrar/recibir la cadena desde Double?


¿Alguna otra opción?

 
Yan Barmin:

El problema es que no es un número introducido como texto (por ejemplo, "345,45") lo que necesito convertir en Doble, sino cualquier texto no relacionado con el número en sí. Cuando se aplica, por ejemplo

Lo mismo ocurre a la inversa. ¿Alguna otra variante?

StringToCharArray

 
Yan Barmin:

Entonces, ¿hay otras opciones?

No entiendo el sentido de esta conversión, ¿quieres obtener una suma de hash? Habrá problemas con la desencriptación inversa. Si la conversión disminuye la cantidad de información, entonces la está perdiendo irremediablemente.

¿Qué número quieres ver aquí?

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

No entiendo el sentido de esta conversión, ¿quieres una suma hash? Habrá un problema con la desencriptación inversa. Si la conversión disminuye la cantidad de información, entonces la está perdiendo irremediablemente.

¿Qué número quieres ver aquí?

Probablemente este:

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

}
 

Es gracioso ;)

Puedes corresponder así en el foro. La historia, la política, todo lo difícil, y nadie te enviará a la prohibición. Dos, tres, uno...

 
19423224222423523223344322342242342242553224523824023824822425532232228229255322272382262382402322422523224623224424022423623233
 
Ahora tendrás que escribir un decodificador para leerlo.
 
Aleksei Stepanenko:
Bueno, ahora tendrás que escribir un decodificador para leerlo.

Bueno, si es una cadena, entonces necesitas código extra, pero un array directamente

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