MathSwap

Ändert die Reihenfolge der Bytes des Typs ushort.

ushort  MathSwap(
   ushort  value      // Wert
   );

Parameter

Wert

[in]  Wert, dessen Bytefolge geändert werden soll.

Rückgabewert

ushort Wert mit umgekehrter Bytefolge.

MathSwap

Ändert die Reihenfolge der Bytes des Typs uint.

uint  MathSwap(
   uint   value      // Wert
   );

Parameter

Wert

[in]  Wert, dessen Bytefolge geändert werden soll.

Rückgabewert

uint Wert mit umgekehrter Bytefolge.

MathSwap

Ändert die Reihenfolge der Bytes des Typs ulong.

ulong  MathSwap(
   ulong  value      // Wert
   );

Parameter

Wert

[in]  Wert, dessen Bytefolge geändert werden soll.

Rückgabewert

ulong Wert mit umgekehrter Bytefolge.

 

Beispiel:

#property script_show_inputs
 
input ulong  InpLongValue  =  1;    // Eingabe des Wertes vom Typ ulong
input uint   InpIntValue   =  2;    // Eingabe des Wertes vom Typ uint
input ushort InpShortValue =  3;    // Eingabe des Wertes vom Typ ushort
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- Drucken der von MathSwap() eingegebenen und umgewandelten Werte in dezimaler und binärer Darstellung in das Journal
   Print(ValueDescription(InpLongValue));
   Print(ValueDescription(InpIntValue));
   Print(ValueDescription(InpShortValue));
   /*
  Ergebnis:
   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()
   */
  }
//+------------------------------------------------------------------+
//| Rückgabe des Textes zur Beschreibung der Variablenwerte          |
//+------------------------------------------------------------------+
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));
  }
//+------------------------------------------------------------------+
//| Rückgabe der binären Darstellung einer Zahl als Zeichenkette     |
//+------------------------------------------------------------------+
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;
  }

Siehe auch

Netzwerkfunktionen, SocketRead, SocketSend, SocketTlsRead, SocketTlsReadAvailable, SocketTlsSend