MathSwap
Ändert die Reihenfolge der Bytes des Typs ushort.
ushort MathSwap(
ushort value
);
|
Parameter
Wert
[in] Wert, dessen Bytefolge geändert werden soll.
Rückgabewert
MathSwap
Ändert die Reihenfolge der Bytes des Typs uint.
uint MathSwap(
uint value
);
|
Parameter
Wert
[in] Wert, dessen Bytefolge geändert werden soll.
Rückgabewert
MathSwap
Ändert die Reihenfolge der Bytes des Typs ulong.
ulong MathSwap(
ulong value
);
|
Parameter
Wert
[in] Wert, dessen Bytefolge geändert werden soll.
Rückgabewert
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 value: 1
ulong value: 72057594037927936 using MathSwap()
binary ulong value: 0000000000000000000000000000000000000000000000000000000000000001
binary ulong value: 0000000100000000000000000000000000000000000000000000000000000000 using MathSwap()
uint value: 2
uint value: 33554432 using MathSwap()
binary uint value: 00000000000000000000000000000010
binary uint value: 00000010000000000000000000000000 using MathSwap()
ushort value: 3
ushort value: 768 using MathSwap()
binary ushort value: 0000000000000011
binary ushort value: 0000001100000000 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_name, x, type_name, MathSwap(x), type_name, num_bits, bin_x, type_name, num_bits, bin_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 <=size; i++)
res += !((x<<i)& mask) ? "0" : "1";
return res;
}
|
Siehe auch
Netzwerkfunktionen, SocketRead, SocketSend, SocketTlsRead, SocketTlsReadAvailable, SocketTlsSend