MathSwap

ushort类型值中改变字节的顺序

ushort  MathSwap(
   ushort  value      //值
   );

参数

[in]  用于改变字节顺序的值。

返回值

具有相反字节顺序的ushort值。

MathSwap

uint类型值中改变字节的顺序。

uint  MathSwap(
   uint   value      // 值
   );

参数

[in]  用于改变字节顺序的值。

返回值

具有相反字节顺序的uint值。

MathSwap

ulong类型值中改变字节的顺序。

ulong  MathSwap(
   ulong  value      //值
   );

参数

[in]  用于改变字节顺序的值。

返回值

具有相反字节顺序的ulong值。

 

示例:

#property script_show_inputs
 
input ulong  InpLongValue  =  1;    // 在这里输入任何ulong值
input uint   InpIntValue   =  2;    // 在这里输入任何uint值
input ushort InpShortValue =  3;    // 在这里输入任何ushort值
 
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
 
//--- 在日志中以十进制和二进制形式记录MathSwap()输入和转换的值
   Print(ValueDescription(InpLongValue));
   Print(ValueDescription(InpIntValue));
   Print(ValueDescription(InpShortValue));
   /*
   result:
   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()
   */
  }
//+------------------------------------------------------------------+
//| Return the text describing the variable values                   |
//+------------------------------------------------------------------+
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));
  }
//+------------------------------------------------------------------+
//| Return the binary representation of a number as a string         |
//+------------------------------------------------------------------+
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;
  }

另见

网络函数SocketReadSocketSendSocketTlsReadSocketTlsReadAvailableSocketTlsSend