MathSwap

Cambia l'ordine dei byte nei valori di tipo ushort.

ushort  MathSwap(
   ushort  value      // valore
   );

Parametri

valore

[in] Valore per la modifica dell'ordine dei byte.

Valore di ritorno

valore ushort con l'ordine dei byte inverso.

MathSwap

Cambia l'ordine dei byte nei valori di tipo uint.

uint  MathSwap(
   uint   value      // valore
   );

Parametri

valore

[in] Valore per la modifica dell'ordine dei byte.

Valore di ritorno

valore uint con l'ordine dei byte inverso.

MathSwap

Cambia l'ordine dei byte nei valori di tipo ulong.

ulong  MathSwap(
   ulong  value      // valore
   );

Parametri

valore

[in] Valore per la modifica dell'ordine dei byte.

Valore di ritorno

valore ulong con l'ordine dei byte inverso.

 

Esempio:

#property script_show_inputs
 
input ulong  InpLongValue  =  1;    // Inserisci qui qualsiasi valore ulong
input uint   InpIntValue   =  2;    // Inserisci qui qualsiasi valore uint
input ushort InpShortValue =  3;    // Inserisci qui qualsiasi valore ushort
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- stampa nel journal i valori inseriti e convertiti da MathSwap() nella rappresentazione decimale e binaria
   Print(ValueDescription(InpLongValue));
   Print(ValueDescription(InpIntValue));
   Print(ValueDescription(InpShortValue));
   /*
  risultato:
   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()
   */
  }
//+-------------------------------------------------------------------------+
//| Restituisce il testo che descrive i valori delle variabili              |
//+-------------------------------------------------------------------------+
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));
  }
//+---------------------------------------------------------------------------------------------+
//| Restituisce la rappresentazione binaria di un numero come stringa                           |
//+---------------------------------------------------------------------------------------------+
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;
  }

Vedi anche

Funzioni di rete, SocketRead, SocketSend, SocketTlsRead, SocketTlsReadAvailable, SocketTlsSend