MathSwap

Change l'ordre des octets dans la valeur de type ushort.

ushort  MathSwap(
   ushort  value      // valeur
   );

Paramètres

value

[in]  Valeur pour laquelle il faut changer l'ordre des octets.

Valeur de Retour

la valeur ushort avec l'ordre inverse des octets.

MathSwap

Change l'ordre des octets dans la valeur de type uint.

uint  MathSwap(
   uint   value      // valeur
   );

Paramètres

value

[in]  Valeur pour laquelle il faut changer l'ordre des octets.

Valeur de Retour

la valeur uint avec l'ordre inverse des octets.

MathSwap

Change l'ordre des octets dans la valeur de type ulong.

ulong  MathSwap(
   ulong  value      // valeur
   );

Paramètres

value

[in]  Valeur pour laquelle il faut changer l'ordre des octets.

Valeur de Retour

la valeur ulong avec l'ordre inverse des octets.

 

Exemple :

#property script_show_inputs
 
input ulong  InpLongValue  =  1;    // Saisissez n'importe quelle valeur de type ulong ici
input uint   InpIntValue   =  2;    // Saisissez n'importe quelle valeur de type uint ici
input ushort InpShortValue =  3;    // Saisissez n'importe quelle valeur de type ushort ici
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- affiche les valeurs saisies et converties par MathSwap() en représentation décimale et binaire dans le journal
   Print(ValueDescription(InpLongValue));
   Print(ValueDescription(InpIntValue));
   Print(ValueDescription(InpShortValue));
   /*
  résultat :
   ulong value1
   ulong value72057594037927936 using MathSwap()
   binary ulong value0000000000000000000000000000000000000000000000000000000000000001
   binary ulong value0000000100000000000000000000000000000000000000000000000000000000 using MathSwap()
   
   uint value2
   uint value33554432 using MathSwap()
   binary uint value00000000000000000000000000000010
   binary uint value00000010000000000000000000000000 using MathSwap()
   
   ushort value3
   ushort value768 using MathSwap()
   binary ushort value0000000000000011
   binary ushort value0000001100000000 using MathSwap()
   */
  }
//+------------------------------------------------------------------+
//| Retourne le texte décrivant les valeurs des variables            |
//+------------------------------------------------------------------+
template <typename T>
string ValueDescription(T x)
  {
   int    num_bits   = sizeof(T)*8;
   string type_name  = typename(T);
   string bin_x      = NumberToBinaryString(x);
   string bin_swap_x = NumberToBinaryString(MathSwap(x));
   return(StringFormat("%s value: %lld\n%s value: %lld using MathSwap()\nbinary %s value: %0*s\nbinary %s value: %0*s using MathSwap()\n"
          type_namextype_nameMathSwap(x), type_namenum_bitsbin_xtype_namenum_bitsbin_swap_x));
  }
//+------------------------------------------------------------------+
//| Renvoie la représentation binaire du nombre sous forme de chaîne |
//+------------------------------------------------------------------+
template <typename T>
string NumberToBinaryString(T x)
  {
   string res  = "";
   int    i    = -1;
   uchar  size = sizeof(T)*8-1;
   ulong  mask = (ulong)1<<size;
   while(!((x<<++i)& mask));
   for(; i <=sizei++)
      res += !((x<<i)& mask) ? "0" : "1";
   return res;
  }

Voir aussi

Fonctions réseau, SocketRead, SocketSend, SocketTlsRead, SocketTlsReadAvailable, SocketTlsSend