MathSwap

Меняет порядок байтов в значении типа ushort.

ushort  MathSwap(
   ushort  value      // значение
   );

Параметры

value

[in]  Значение для смены порядка байтов.

Возвращаемое значение

Значение ushort с обратным порядком байтов.

MathSwap

Меняет порядок байтов в значении типа uint.

uint  MathSwap(
   uint   value      // значение
   );

Параметры

value

[in]  Значение для смены порядка байтов.

Возвращаемое значение

Значение uint с обратным порядком байтов.

MathSwap

Меняет порядок байтов в значении типа ulong.

ulong  MathSwap(
   ulong  value      // значение
   );

Параметры

value

[in]  Значение для смены порядка байтов.

Возвращаемое значение

Значение ulong с обратным порядком байтов.

 

Пример:

#property script_show_inputs
 
input ulong  InpLongValue  =  1;    // Enter any ulong value here
input uint   InpIntValue   =  2;    // Enter any uint value here
input ushort InpShortValue =  3;    // Enter any ushort value here
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- распечатаем в журнале введённые и преобразованные MathSwap() значения в десятичном и двоичном представлении
   Print(ValueDescription(InpLongValue));
   Print(ValueDescription(InpIntValue));
   Print(ValueDescription(InpShortValue));
   /*
   результат:
   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()
   */
  }
//+------------------------------------------------------------------+
//| Возвращает текст описания значений переменной                    |
//+------------------------------------------------------------------+
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));
  }
//+------------------------------------------------------------------+
//| Возвращает бинарное представление числа в виде строки            |
//+------------------------------------------------------------------+
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;
  }

Смотри также

Сетевые функции, SocketRead, SocketSend, SocketTlsRead, SocketTlsReadAvailable, SocketTlsSend