forked from rosh/MQL5Book
39 lines
1.5 KiB
MQL5
39 lines
1.5 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| MathSwap.mq5 |
| |
//| Copyright 2021, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//+------------------------------------------------------------------+
| |
| |
//+------------------------------------------------------------------+
| |
//| Integer value to byte array |
| |
//+------------------------------------------------------------------+
| |
template<typename T>
| |
union ByteOverlay
| |
{
| |
T value;
| |
uchar bytes[sizeof(T)];
| |
ByteOverlay(const T v) : value(v) { }
| |
void operator=(const T v) { value = v; }
| |
};
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
const uint ui = 0x12345678;
| |
const ulong ul = 0x0123456789ABCDEF;
| |
| |
ByteOverlay<uint> bo(ui);
| |
ArrayPrint(bo.bytes); // 120 86 52 18 <==> 0x78 0x56 0x34 0x12
| |
bo = MathSwap(ui);
| |
ArrayPrint(bo.bytes); // 18 52 86 120 <==> 0x12 0x34 0x56 0x78
| |
| |
PrintFormat("%I32X -> %I32X", ui, MathSwap(ui));
| |
PrintFormat("%I64X -> %I64X", ul, MathSwap(ul));
| |
/*
| |
12345678 -> 78563412
| |
123456789ABCDEF -> EFCDAB8967452301
| |
*/
| |
}
| |
//+------------------------------------------------------------------+
|