28 lines
901 B
Markdown
28 lines
901 B
Markdown
[← Utils](../README.md)
| |||
| |||
# Utils/Bits
| |||
| |||
Bit manipulation, fast serialization buffers, and hashing support used by the ecosystem's hash maps.
| |||
| |||
## Main features
| |||
- Fast write-oriented bit buffer: booleans, integers, arrays, doubles, floats, padded strings (`CBitBuffer` in `BitFastBuffer.mqh`).
| |||
- Little-endian / big-endian byte (de)serialization (`FromBytesLE`, `FromBytesBE`, `ToBytes`).
| |||
- Generic hash + equality implementation for `CBitBuffer`, so it can be used as a key in `TSN` hash maps (`TSN::CGenericHash_CBitBuffer` in `Hash.mqh`, built on XXH64).
| |||
| |||
## Basic usage
| |||
```mql5
| |||
CBitBuffer bit;
| |||
bit.WriteBool(true);
| |||
bit.WriteInteger(42);
| |||
bit.WriteDouble(3.14);
| |||
| |||
uchar buf[];
| |||
int written = bit.ToBytes(buf);
| |||
```
| |||
| |||
```mql5
| |||
// Using CBitBuffer as a hash map key:
| |||
TSN::CHashMapFastNor<TSN::CBitBuffer, int, TSN::CGenericHash_CBitBuffer> cache;
| |||
```
| |||
| |||
> Only the most representative methods are shown here.
|